假设我有一个子函数:
function Child() {}
并有一个父函数:
function Parent() {}
然后我将 Child 的原型设置为 Parent 的新实例:
Child.prototype = new Parent()
困惑是每次我创建新的 Child 实例时
var c = new Child()
是否会再次创建父级?
假设我有一个子函数:
function Child() {}
并有一个父函数:
function Parent() {}
然后我将 Child 的原型设置为 Parent 的新实例:
Child.prototype = new Parent()
困惑是每次我创建新的 Child 实例时
var c = new Child()
是否会再次创建父级?
它只创建一次。每次调用都会创建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!");
}
两者都使用Object.getPrototypeOf。c1
_ 此外,' 和'都指向同一个对象实例,表明两者和共享同一个对象。c2
prototype
c1
c2
aParentProp
c1
c2
Parent
prototype