Javascript寄生继承

use*_*064 7 javascript inheritance

我正在努力使用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;
 }
Run Code Online (Sandbox Code Playgroud)

据我所知,ZParenizor是根据Parenizor定义的.但Parenizor是基类,它继承自无人.所以this.uber函数不会被定义,实际上我在调用toString新的ZParenizor2对象的方法时会出错.

我是正确的,还是我无视某些事情?

更新 我是对的.此方法仅在您创建ZParenizor时使用0作为参数,因为它不需要调用该uber方法(正如您可以从方法imeplementation中看到的那样).

当您使用不同的参数尝试它时,我收到此错误:

Uncaught TypeError: Object #<error> has no method 'uber'
Run Code Online (Sandbox Code Playgroud)

Chi*_*tor 2

您可以修改 Parenizor 的原型以使其具有 uber 函数,并且它可以与任何其他值一起使用。