gpt4 book ai didi

javascript - obj.constructor 返回最顶层的构造函数而不是直接父构造函数

转载 作者:行者123 更新时间:2023-11-28 08:42:41 24 4
gpt4 key购买 nike

刚刚在玩 javascript 继承时遇到了这个小困惑。

 function A() {}

function B() {}
B.prototype = new A();

function C() {}
C.prototype = new B();

var x = new C();
x.construction // -> returns A in chrome console.

我期望 x.constructor 是 C(甚至可能是 B),但不是一直到 A(为什么甚至停在 A 处而不显示对象)

最佳答案

当您替换prototype时完全对象,原始constructor引用已被删除,原始 prototype对象,而是从 new A() 继承等

function B() {}

console.log(B.prototype.constructor === B); // true

B.prototype = new A();

console.log(B.prototype.constructor === B); // false
console.log(B.prototype.constructor === A); // true

因此,您必须重置 constructor设置prototype后:

function A() {}

function B() {}
B.prototype = new A();
B.prototype.constructor = B;

function C() {}
C.prototype = new B();
C.prototype.constructor = C;

关于javascript - obj.constructor 返回最顶层的构造函数而不是直接父构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20314529/

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