第一个是一个函数。。
执行后返回一个对象。第二个是一个函数。。
实例化后可成为对象。第一个和第二个无区别。。第三个只是把showCar给了prototype这个特殊的对对象(传说中的原型)它们的函数存放的不通。。(它们是指把1-2看做a,3看做b)第一个和第二个的showCar方法为一个独立的函数
其this指针指向相对应的对象如果创建两个a即var o1 = new Car(1, 1); //第一个函数var o2 = new Car(1, 1); //第一个函数
这样o1.showCar --------------- 函数1o2.showCar --------------- 函数2而创建两个b则var o1 = new Car(1, 1) //第三个函数var o2 = new Car(1, 1) //第三个函数o1.showCar ---------------
|
--------- prototype.showCar 函数
|
o2.showCar ---------------
执行后返回一个对象。第二个是一个函数。。
实例化后可成为对象。第一个和第二个无区别。。第三个只是把showCar给了prototype这个特殊的对对象(传说中的原型)它们的函数存放的不通。。(它们是指把1-2看做a,3看做b)第一个和第二个的showCar方法为一个独立的函数
其this指针指向相对应的对象如果创建两个a即var o1 = new Car(1, 1); //第一个函数var o2 = new Car(1, 1); //第一个函数
这样o1.showCar --------------- 函数1o2.showCar --------------- 函数2而创建两个b则var o1 = new Car(1, 1) //第三个函数var o2 = new Car(1, 1) //第三个函数o1.showCar ---------------
|
--------- prototype.showCar 函数
|
o2.showCar ---------------
var wc = new Function();
wc.prototype.a = function () { return "a"; }var o1 = new wc;var o2 = new wc;
alert(o1.a === o2.a && o2.a === wc.prototype.a);
var cs = function () {
this.a = function () { return "a"; };
};var o2 = new cs;
var o3 = new cs;alert(o2.a === o3.a);
</script>
就是被btbtd(转型(L/C)AMP)同学踩在脚底下的那个
这样的话
a创建一次则创建一个funcb创建多少个都是引用的那一个func所以说b比较节省资源但是一个对象也不会创建那么多次吧
所以说都无所谓啦。。自己感觉怎么写方便就怎么写好了
var o3 = new cs;alert(o2.a === o3.a);这个操作是比较指针当然换成==也是比较指针地址。。
而不是比地址里的内容。。
如果你换成。。
alert(o3.a.toString() === o4.a.toString());
就相等了。。
alert(document.toString()===window.toString())toString之后都是字符串"[object]"
var wc = new Function();
wc.prototype.a = function () { return "a"; }var o1 = new wc;var o2 = new wc;
alert(o1.a === o2.a && o2.a === wc.prototype.a);
var cs = function () {
this.a = function () { return "a"; };
};var o2 = new cs;
var o3 = new cs;alert(o2.a === o3.a);
</script>--------------wc.prototype.a = function () { return "a"; } 这是什么意思?Function.prototype.a = function(){ return "a"; }给原型添加方法不是这样得么?
用class.prototype.fun = function(){}
的方法比较节省内存,
因为这样做是把这个function附加到这个类的原形对象上,
在new的时候就不会在内存中分配一个区域来储存代码,而只用存储一个指针即可。
假设
方法一造出来的是 car1
方法二造出来的是 car2
方法三造出来的是 car3一方面:
你问car1有没有火炮,car1看了看自己,说没有。
你问car2有没有火炮,car2看了看自己,再去工厂里看了看造自己的模子,说没有。
car3和car2一样。
二方面:
工厂的模具升级,通过原型技术装上了火炮
car1和car2还是没有;
car3却可以用了。觉得造car2的厂家不太讨好欢迎大虾拍砖
car1是没爹的山寨货,基本没售后。
car2是厂子里造的,有牌子,厂家提供了升级机会,但可能某些功能部件不能自行升级。
car3大厂的车,所有功能部件都可以同步升级。
当然,所有car你都可以给他个性化
用prototype创建的方法是"静态方法"...static的...
this.function创建的是"公有方法"...public的...
还有在函数里面直接function 名字(...){}的就是"私有方法"...private的...
唉,为什么web总能看到水源的人呢
a:function(){..},
b:"d"
};