关于原型的一点理解。
为什么会有原型这玩意?是为了让一个对象关联到另一个对象。
在js里面只有对象,是没有类的概念的。为了能模拟类,就开始利用函数的特殊属性:prototype。
因为所有函数都拥有一个名为prototype的公有且不可枚举的属性。
function Person(){} Person.prototype;//{}
看看会输出一个什么鬼东西?看下图:

这个对象就是就是Person 的原型,我们可以通过Person.prototype访问它。
那么这个对象具体是个什么呢?

new Person()创建p,p的内部属性__proto__就会指向Person.prototype所指的对象上。
也就是说这个对象是在调用new person()创建的,最后会被关联到Person.prototype对象上。
用图说话,看下图:

其实new Person()并没有直接创建关联,只是间接的完成了我们的目标:一个关联到其他对象的新对象。

浙公网安备 33010602011771号