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();
我想在 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();