1

我想在 javascript 中创建一个抽象类,它实现某些方法,调用抽象方法并让“继承”类来实现这些抽象方法。我已经阅读了很多关于 js 原型的内容。javascript 中抽象类和方法的每一个建议实现似乎都是简单的继承,但不是真正的抽象。这是一个非常简单的示例来展示我想要实现的目标:

    var abstractClass = {
      abstractMethod: function() { /* i don't know yet what i'm going to do */ },
      concreteMethod: function() {
        abstractClass.abstractMethod();
      }
    }


    specializedClass = Object.create(abstractClass);
    specializedClass.abstractMethod = function() {
      alert('Now i know what to do');
    }

    specializedClass.concreteMethod();

我的问题:是否有一种非 hacky、非解决方法在 javascript 中创建抽象类?

4

1 回答 1

1

在方法中,使用而不是命名的类/变量,它被您的 Object.create() 调用复制/破坏。

var abstractClass = {
  abstractMethod: function() { /* i don't know yet what i'm going to do */ },
  concreteMethod: function() {
    this.abstractMethod(); // < made generic with this 
  }
}


specializedClass = Object.create(abstractClass);
specializedClass.abstractMethod = function() {
  alert('Now i know what to do');
}

specializedClass.concreteMethod();
于 2016-01-29T20:48:51.463 回答