gpt4 book ai didi

javascript - 为什么我不能将 Parent.prototype 分配给 Son.prototype

转载 作者:行者123 更新时间:2023-11-30 12:19:46 25 4
gpt4 key购买 nike

我很困惑为什么我不能正确理解以下代码

function Parent(){
this.foo = 'bar';
}

function Son(){}


// if I do this
Son.prototype = Parent.prototype;
new Son().foo;
// output undefined


// try normal way
Son.prototype = new Parent();
new Son().foo;
// output 'bar'

在我看来,实例son是通过__proto__找到它的原型(prototype)的,可能像一个指针,但为什么我不能直接引用Parent.prototype?

最佳答案

“Parent”原型(prototype)对象上没有“foo”属性。 Parent() 构造函数在每个构造的实例 上放置一个“foo”属性。

因此,您成功地在两个构造函数之间共享了同一个原型(prototype)对象,但这并没有达到您的代码期望的效果。

如果您的代码像这样向“Parent”原型(prototype)显式添加了“foo”属性:

function Parent() {}
Parent.prototype.foo = "this is foo";

那么这会起作用:

function Son() {}
Son.prototype = Parent.prototype;
alert(new Son().foo); // "this is foo"

现在,共享原型(prototype)对象当然是您可以做的事情,但这有点不寻常。

关于javascript - 为什么我不能将 Parent.prototype 分配给 Son.prototype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31474907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com