javascript 中的真正抽象方法

Real abstract method in javascript

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

    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();

我的问题:在 javascript 中是否有一种非 hacky、非解决方法来制作抽象 classes?

在方法内部,使用 this 而不是命名的 class/variable,这是 duplicated/broken 通过 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();