阐明JavaScript原型



假设我有一个子函数:

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,c1c2都具有相同的prototype。此外,c1c2aParentProp都指向相同的对象实例,这表明c1c2共享其prototype的相同Parent对象。

相关内容

  • 没有找到相关文章

最新更新