gpt4 book ai didi

javascript - 如何让一个对象继承其原型(prototype)中的两个对象?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:25:43 35 4
gpt4 key购买 nike

我试图让一个对象继承自另外两个对象,但这样做不起作用,我怎样才能让它起作用?

function a() {

};

a.prototype.iamA = function() {
alert("a");
};

function b() {

};

b.prototype.iamB = function() {
alert("b");
};

function ab() {

};

ab.prototype = new a();
ab.prototype = new b();

console.log(new ab());

似乎原型(prototype)被覆盖了我怎么能添加到它,我也试过将它添加到原型(prototype)但是这也不起作用?

最佳答案

使用对象扩展而不是赋值,例如:

function extend(obj, source) {
for (var prop in source) {
obj[prop] = source[prop];
}
return obj;
}

然后:

ab.prototype = extend(new a(), new b());         (1)

或者您可以选择使用下划线的 extend function .

ab.prototype = _.extend({}, new a(), new b());   (2)

编辑:

严格来说,这是mixin而不是真正的多重继承,因为(new ab instanceof b) === false 在 (1) 和 (2) 中。

有关更多信息,请查看此引用资料:No multiple Inheritance .

也就是说,mixin 对你来说可能已经足够了。事实证明,那些认为他们需要继承通常只需要代码重用,而不是类型相关的构建。对于 dynamic typing 尤其如此。 (或 duck typing )像 JavaScript 这样的语言。

关于javascript - 如何让一个对象继承其原型(prototype)中的两个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16383073/

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