码迷,mamicode.com
首页 > 其他好文 > 详细

对象构造函数的原型图

时间:2016-09-22 00:50:50      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

对象的定义其实很广泛,万物皆为对象,我们创建对象一般都是用构造函数来创建的,这里我们来说说构造函数创建对象的原型图把.

这个问题有点抽象,举个例子来说,方便一点:

技术分享

这是我们构造函数,这里我们要结合一张 图来说明就更清楚了,这里我们就用一个实例p1好了,其他两个就不用了.

技术分享

这是构造函数和实例的初始关系,person就是这个构造函数,它里面其实有个属性叫prototype,prototype属性的值也是个对象,而这个对象其实就是称作构造函数的原型对象.到这里那上面那张图里应该要多谢东西了:

技术分享

这个原型对象是有prototype而产生的,那这个原型函数里也有个特殊的属性叫做constructor,它的值其实就是构造函数本身person,原型对象我们也是可以给他加属性的,例如:

技术分享

这样上面原型图有变了:

 技术分享

然而构造函数的实例和原型对象有关系吗?其实也是有关系的.原型对象中的属性是可以被实例共享的,那为什么可以共享呢?因为实例中其实有一个属性叫__proto__.它的值也是原型对象.

技术分享

技术分享

Person.prototype===p1.__proto__  是完全相等的.

因为可以共享,所以这里其实p1.constructor得到就是person构造函数本身,

这里要注意一点,当你要获取一个对象的属性时,第一步会先从自身来找,如果自己的属性中没有,才会从原型对象中接着查找,一直一层一层查找下去.

 

对象构造函数的原型图

标签:

原文地址:http://www.cnblogs.com/cykblogs/p/5894520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!