__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属性啦,它根本就没有这东西!!!

很多人在此有所混淆。

原文地址:https://www.cnblogs.com/zzq-include/p/5599809.html