class
はobject literal
と定義され、コンストラクタのスコープ内にメソッドが定義されています。このように:私はES6 class
構文でNodeMappingAbstract
を拡張するにはどうすればよいEcmascript 6クラスでオブジェクトリテラルクラスを拡張する方法
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);
};
};
?
class SomeMapping extends NodeMappingAbstract{
constructor(){
super();
}
mapToContent(rawElement) {
console.warn('mapContent called');
return rawElement;
}
}
しかし、私はそれをインスタンス化し、このような
mapToContent
呼び出すとき::私は
extends
と
super()
を使用しようとし
let m = new SomeMapping();
m.mapToContent();
を私はError: Not implemented
を取得し、NodeMappingAbstract
の実装が使用されていることを意味します。
私はあなたのコード内の任意のオブジェクトリテラル表示されないのですか? – Bergi
@Bergi 'オブジェクトリテラル'によって、私は 'NodeMappingAbstract'が(インスタンスのプロパティとして)メソッドを定義する方法を意味しました。このパターンを呼び出すより良い方法はありますか? –
「特権メソッドを持つコンストラクタ関数」と呼ばれています。あるいは単に「インスタンス固有のメソッド」(実際にどこに作成されるかは関係ありません)。 – Bergi