假设我有一个子功能:
function Child() {}
并拥有父功能:
function Parent() {}
然后我将Child的原型设置为Parent的新实例:
Child.prototype = new Parent()
每次我创建一个Child
的新实例时都会产生混淆var c = new Child()
是否会再次创建父母?
答案 0 :(得分:1)
它只创建一次。每次调用new Child()
时,都会创建一个新的Child
对象,并将相同的Parent
对象设置为其原型。您可以通过执行以下操作(jsfiddle)来确认:
function Child() {}
function Parent() {
this.aParentProp = { name : "Parent" };
}
Child.prototype = new Parent();
var c1 = new Child();
var c2 = new Child();
if(Object.getPrototypeOf(c1) === Object.getPrototypeOf(c2)) {
alert("same prototype!");
}
if(c1.aParentProp === c2.aParentProp) {
alert("same property!");
}
c1
和c2
使用Object.getPrototypeOf具有相同的prototype
。此外,c1
和c2
的{{1}}指向同一个对象实例,表明aParentProp
和c1
共享同一个{{1}对象为c2
。