javascript中真正的抽象方法

时间:2016-01-29 20:45:05

标签: javascript inheritance abstract-methods

我想在javascript中创建一个抽象类,它实现某些方法,调用抽象类,并让“继承”#j;用于实现这些抽象的类。我已经阅读了很多关于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中创建抽象类?

1 个答案:

答案 0 :(得分:1)

在方法内部,使用 this 而不是命名的类/变量,它由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();