我正在努力使用Javascript 经典继承 1。虽然最终道格拉斯·克罗克福德拒绝了它在Javascript中支持经典模型的第一次尝试,但我觉得有趣的是理解:
我已经写了8年的JavaScript了,我从来没有发现需要使用超级功能。超级想法在经典模式中相当重要,但在原型和功能模式中似乎是不必要的。我现在看到我早期尝试在JavaScript中支持经典模型是一个错误。
然而,对于寄生继承的关注点还有一些不太明确的地方:
function ZParenizor2(value) {
var that = new Parenizor(value);
that.toString = function () {
if (this.getValue()) {
return this.uber('toString');
}
return "-0-"
};
return that;
}
ZParenizor,据我所知,是根据Parenizor来定义的。但Parenizor是基类,它继承自无人。因此,我不会定义this.uber
函数,实际上当我调用新ZParenizor2对象的toString
方法时,我会出错。
我是正确的,还是我无视某些事情?
更新
我是正确的。此方法仅在创建ZParenizor时使用0作为参数,因为它不需要调用uber
方法(正如您可以从方法imeplementation中看到的那样)。
当您使用其他参数尝试时,我收到此错误:
Uncaught TypeError: Object #<error> has no method 'uber'
答案 0 :(得分:2)
您可以修改Parenizor的原型以获得超级功能,它可以与任何其他值一起使用。