Javascript 类继承,而不是函数

标签 javascript object inheritance prototype

有人可以向我解释一下我做错了什么吗? 我想要一个具有标准功能的基本对象(类),并且对于 B,我想覆盖标准功能以使其更具体,因此我可以用 C 更改类 B 并具有相同的功能,但底层是其他代码。 这一切的目的是,如果 B 或 C 没有 A 应该提供标准功能的功能,我需要特定的渲染器。

在 C# 中,你有函数覆盖的东西,但我似乎无法弄清楚它在 javascript 中是如何工作的。

提前致谢。

var A = function () {

}

A.prototype = {
    sup: function() {
        console.log("sup");
    },
    doSome: function () {
        console.log("doSomeA");
    }
}




var B = function () {
    A.call(this);

}

B.prototype = {
    doSome: function () {
        console.log("doSomeB");
    }

}

B.prototype = Object.create(A.prototype);
B.prototype.constructor = B;


var a1 = new B();
a1.doSome();
a1.sup(); // Not a function.
a1.sup(); // Not a function.

最佳答案

您正在覆盖您的原型(prototype):

B.prototype = { ... }
B.prototype = Object.create(A.prototype);

这与覆盖任何其他变量完全相同 - 最新的适用。

我了解到这是可靠的继承模式:

function B() {
    // Call super constructor
    A.call(this);
}
// Clone inital properties and methods
B.prototype = Object.create(A.prototype);
// Extend the prototype
B.prototype.foo = "bar"

关于Javascript 类继承,而不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33784229/

相关文章:

javascript - 如何选择具有确切类名的元素?

javascript - 我想从 JavaScript 对象列表中获取关联数组

python - Python 赋值后类对象的继承

Python装饰器添加类级变量

javascript - 将预先创建的对象(o1,o2,o3 ..)存储在数组中

java - 遍历节点类被另一个类继承的树

javascript - 球互相弹开

javascript - 使用 javascript 从日期字符串获取日期

javascript - 检查字符串是否包含子字符串(不区分大小写)

javascript - 如何在 JavaScript 中使用对象数组