gpt4 book ai didi

javascript - 使用 new 关键字的函数原型(prototype)继承

转载 作者:行者123 更新时间:2023-11-28 15:14:34 26 4
gpt4 key购买 nike

我确保我正确理解 JavaScript 的 newprototype 关键字,但我组合在一起的一些简单代码的行为并不符合我的预期。

var ClassA = function() {
return {
shout: function() {
alert("I can shout");
}
};
};
ClassA.prototype.shoutLouder = function() {
alert("I CAN SHOUT");
};

var instance = new ClassA();
instance.shout();

// why not available?
instance.shoutLouder();

当实例变量尝试调用 shoutLouder 时,它会失败,并显示“未捕获的类型错误:instance.shoutLouder 不是函数”。

但是,在 mozilla docs ,它说当使用new创建对象时:

A new object is created, inheriting from Foo.prototype.

我的理解哪里错了?

Here is a jsbin对于上面的代码片段。

最佳答案

您将失去对函数(Class')原型(prototype)对象的访问,因为您正在从函数中返回一个新对象:

var ClassA = function() {
return {
shout: function() {
alert("I can shout");
}
};
};

而你应该这样做:

var ClassA = function() {
this.shout = function() {
alert("I can shout");
};
};

这仍然允许您访问原型(prototype)对象(因此委托(delegate)链仍然有效),因为 new 关键字将从类返回“this”。

关于javascript - 使用 new 关键字的函数原型(prototype)继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620199/

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