gpt4 book ai didi

JavaScript 原型(prototype)继承

转载 作者:行者123 更新时间:2023-11-30 13:31:13 24 4
gpt4 key购买 nike

我正在尝试将一个对象的方法继承到另一个对象中。

我有基础对象,它是使用显示模块模式实现的。

Page = function(url) {
...
return { something: something_I_defined_above }
...
}

Page 应该继承的另一个对象被定义为单例。在实际文件中,Page 定义在 Link 之前。

Link = function() {
this.add = function() {}

var instance = this;

Link = function() { return instance; }
}

接下来我希望 Page 继承 Link。

Page.prototype = new Link();

在测试这段代码时,我得到了 p 函数的未定义:

var p = new Page();
// The following line return undefined.
p.add;

最佳答案

您永远不会真正实例化一个 Page 对象。当你调用

时,你所做的就是返回一个普通的对象字面量
Page = function(url) {
...
return { something: something_I_defined_above }
...
}

var p = new Page();

此文字不继承自 Page.prototype。有一些方法可以解决这个问题,主要取决于您希望如何构建应用程序。

例如,与其让 Page 继承自 Link(这有意义吗?),不如返回一个继承自 Link 的对象>:

Page = function(url) {
...
var Constr = function(){};
Constr.prototype = new Link();
var instance = new Constr();
instance.something = something_I_defined_above;

return instance;
...
}

var p = new Page();

我实际上不确定这里最好的方法是什么。这真的取决于你想要什么。我的建议是不要让它太复杂。

关于JavaScript 原型(prototype)继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6700563/

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