关于原型的一点理解。

为什么会有原型这玩意?是为了让一个对象关联到另一个对象。

在js里面只有对象,是没有类的概念的。为了能模拟类,就开始利用函数的特殊属性:prototype。

因为所有函数都拥有一个名为prototype的公有且不可枚举的属性。

function Person(){}
Person.prototype;//{}

看看会输出一个什么鬼东西?看下图:

这个对象就是就是Person 的原型,我们可以通过Person.prototype访问它。

那么这个对象具体是个什么呢?

new Person()创建p,p的内部属性__proto__就会指向Person.prototype所指的对象上。

也就是说这个对象是在调用new person()创建的,最后会被关联到Person.prototype对象上。

用图说话,看下图:

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

 

posted @ 2017-08-08 18:32  Throdoe  阅读(164)  评论(0)    收藏  举报