__proto__和protaotype的区分

直接看这样一个例子。

var XXX = function(){};
var p = new XXX();

可以把上面的例子拆分为如下一个过程:

var p={}; //初始化一个对象p
p.__proto__ = XXX.prototype;//__proto__是实例的属性,prototype是函数模板的属性
XXX.call(p); //将Person对象成员劫持给p

这样很清晰的就可以看出__proto__是对象实例的属性,而prototype是函数模板的属性;千万不要在实例的对象中在去寻找或者复写prototype属性啦,它根本就没有这东西!!!

很多人在此有所混淆。

 

posted @ 2016-06-20 10:27  soft.push("zzq")  Views(183)  Comments(0)    收藏  举报