【发布时间】:2016-09-14 13:20:23
【问题描述】:
我有一个基础class 定义为object literal,其方法定义在构造函数的范围内。像这样:
var NodeMappingAbstract = function NodeMappingAbstract() {
this.mapToContent = function (obj) {
throw new Error('Not implemented');
};
this.getInfo = function (data) {
throw new Error('Not implemented');
};
this.normalizeUri = function normalizeUri(uri) {
return uriNormalizer.normalize(uri);
};
};
如何使用 ES6 class 语法扩展NodeMappingAbstract?我尝试使用extends 和super():
class SomeMapping extends NodeMappingAbstract{
constructor(){
super();
}
mapToContent(rawElement) {
console.warn('mapContent called');
return rawElement;
}
}
但是当我实例化它并像这样调用mapToContent 时:
let m = new SomeMapping();
m.mapToContent();
我得到Error: Not implemented,这意味着使用了NodeMappingAbstract 的实现。
【问题讨论】:
-
我在你的代码中没有看到任何对象字面量?
-
@Bergi
object literal我的意思是NodeMappingAbstract定义方法(作为实例属性)的方式。有没有更好的方法来调用这种模式? -
它被称为“具有特权方法的构造函数”。或者只是“特定于实例的方法”(它们的创建位置并不重要)。
-
@Bergi 谢谢!我必须学习很多关于 javascript 词汇表的知识:)
标签: javascript node.js ecmascript-6 nodes javascript-objects