【发布时间】:2016-08-20 13:57:03
【问题描述】:
我想知道两者的区别:
childObj.prototype = Object.create(parentObj.prototype)
和
childObj.prototype = parentObj.prototype;
因为它们都需要在子对象中调用父构造函数才能访问构造函数属性。
我知道 Object.create 函数是如何工作的,我注意到不同之处只是因为它返回一个带有父原型的 NEW 对象。我想我不明白的是用父原型返回一个新对象的效果。
【问题讨论】:
-
先建立一个原型链,后面可以修改child.prototype,不会影响到parent。第二个是从字面上对两者进行别名以指向相同的数据结构,并通过任一修改该单个数据结构进行修改,从而影响两者。你想要第一个,虽然通常你想要
ChildObj.prototype = new ParentObj()而不是 Object.create -
虽然通常你想要
ChildObj.prototype = new ParentObj()可能不会,因为这会在将.prototype分配给它的孩子时调用ParentObj构造函数,而不是在创建新实例时.
标签: javascript object prototype prototype-programming