People类使用了两种方法扩充People.Run和People.prototype.IntroduceChinese,请问这两种方法有什么不同?
各有什么优缺点
function People(name)
{
this.name=name;
//对象方法
this.Introduce=function(){
alert("My name is "+this.name);
}
}//类方法
People.Run=function(){
alert("I can run");
}
//原型方法
People.prototype.IntroduceChinese=function(){
alert("我的名字是"+this.name);
}//测试
var p1=new People("Windking");
p1.Introduce();
People.Run();
p1.IntroduceChinese();
各有什么优缺点
function People(name)
{
this.name=name;
//对象方法
this.Introduce=function(){
alert("My name is "+this.name);
}
}//类方法
People.Run=function(){
alert("I can run");
}
//原型方法
People.prototype.IntroduceChinese=function(){
alert("我的名字是"+this.name);
}//测试
var p1=new People("Windking");
p1.Introduce();
People.Run();
p1.IntroduceChinese();
解决方案 »
- ext 如何判断一个按钮是否已被按下 变为灰色?
- 新手請教一下...新手沒分給...請幫忙一下
- jquery 在事件绑定还未完成下点击怎么解决
- 时间该花在jquery上面还是 js上面?
- JS小程序(急!!!)
- 新手请教一下这个点击展开和收起列表的写法是怎么实现的?
- 页面上什么element完全不显示出来,甚至不影响页面的任何属性?(我只想把它作为保存数据的变量,以便于程序设置)
- javascript是用什么函数来测试电脑是否已经在网上.
- 如何在Javascript中创建一个Javascript的全局变量......随时在线等候....急.....
- 关于获取活动页面标签
- 寻求五子棋人机对战源代码
- 怎么用js去除和添加下拉框选项?
每个函数就是一个对象(Function),函数对象都有一个子对象 prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。
在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员。
1、该对象被类所引用,只有函数对象才可引用;
2、在new实例化后,其成员被实例化,实例对象方可调用。
同时,函数是一个对象,函数对象若直接声明成员,不用被实例化即可调用。 其实总结下意思就是加了prototype的对象是不会被实例化的,是一个静态的方法
不加prototype每次new类的时候都会被实例化.占内存了.关键就是占内存了...
People.Run=function(){
alert("I can run");
}
这种方法也没有实例化,与People.prototype.IntroduceChinese有区别吗?
People.prototype.IntroduceChinese()由于People没有被实例化,所以this.name为undefined,
alert("I can run");
}这个两种理解:
1,由于JS的弱类型,People也可以看做一个对象,这句给对象People添加了方法Fun
2,等效理解,给People类添加了静态方法Run