有人可以向我解释一下我做错了什么吗? 我想要一个具有标准功能的基本对象(类),并且对于 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/