我想在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中创建抽象类?
答案 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();