segmentfault官方|深入挖掘原型链( 二 )
本文插图
原型链图示
这就是一条完整的原型链了 , 从图中我们可以发现:
Object.prototype是原型链的尽头 , 再向上就是null了 , null是无意义的 , 一次所有的对象都继承了Object.prototype上的属性和方法 。
4.提一个小问题 , 我想让Foo的所有实例对象都具有数组的属性和方法 , 应该怎么做呢?
通过上面的分析 , 我们知道 , 实例对象共用的属性和方法都应该定义在了他们的原型对象上 , 所以数组的属性和方法都在Array.prototype上 ,
实例对象f1,f2共用的属性和方法来自Foo.prototype,所以我们可以:
Foo.prototype=Array.prototype
这样f1,f2就继承了数组的属性和方法 , 但是我们需要注意一点 , 此时输出f1.constructor , 来观察f1 , f2的构造函数会发现它们已经成了Array ,
这是因为constructor属性同样是从原型对象Foo.prototype上继承而来的 , 所以当Foo.prototype上的constructor属性发生变化时 , 实例对象f1的constructor也会变化 。 所以我们如果不想让构造函数发生变化的话 , 需要重写一次Foo.prototype的constructor属性 ,
Foo.prototype=Array.prototype
Foo.prototype.constructor=Foo 。
所以我们需要注意 , 在修改实例对象的原型对象之后 , 也要记得修改constructor属性
SegmentFault 思否社区和文章作者展开更多互动和交流 。
推荐阅读
- 滨海融媒|乾隆取名的山东美食,外地人连它的名字都读不对
- 环球最旅行官方|福建在“田园之上”的城市:坐拥1300多年建城史,环境不输厦门
- 美食杰官方|酸奶千万不要隔夜喝,喝一次比喝假酒的危害还大,还不进来看看
- 美食杰官方TB|肠道“推粪机”被发现,3块炒一大盘,清肠通便,隔天排空黑宿便
- 美食杰官方|每天早上喝1杯,补升阳气,阳气足,女人脸色红润,精神足自然美
- 美食杰官方|香蕉和它是绝配,女人常吃润肠排宿便,消暑下火,吃出易瘦体质
- 趣头条|官方指导价:9.68-14.98万 2019款名爵6最高现金优惠1万元
- 美食杰官方|夏天到了,这食材抓紧吃,是菜也是药,清热下火,错过等明年
- 汽车|大鼻孔新一代4系双门跑车,官方:避免陷入一片平庸的海洋
- 深圳潮生活官方|2000+㎡的「时尚宇宙母舰」“降落”福田!鞋控们的天堂来了