モジュールにES6クラスを実装しているjavascriptライブラリを使用しています。私はjavascriptで古典的な継承を使用しておらず、基本的にクラスの実装を元に戻したいと考えています。私がそれらのクラスを受け取り、それをFactory/Compositionアプローチで使用する方法はありますか? JSプロトタイプの継承とオブジェクトの簡単な堆肥化を利用したいと思っています。以下は私がこれまで持っているものの例です。最終的に私はJavaScriptでそれを使用することに慣れていないので、classとnewの使用を避けようとしています。私が正しい方法でこれに近づいているのか、私が時間を無駄にしているのか、誰にでも教えてもらえますか、ありがとう。あなたはむしろnew
に慣れる必要がありますクラスを使用する代わりにファクトリ関数を作成する方法
class Example {
constructor(id) {
this.id = id;
}
getID() {
console.log(this.id);
}
}
function convertClassToObject(theClass) {
var x = new theClass();
var newX = Object.create(x);
return newX;
}
var NewPrototype = convertClassToObject(Example);
function NewFactory(options) {
var x = Object.assign(Object.create(NewPrototype), options);
return x;
}
var NewInstance = NewFactory({id: 123456789});
'class'はコンストラクタとプロトタイプの構造の周りだけ糖衣構文です。すべてがまだ原型ベースの下にあります。 'new Example(id)'は 'var obj = Object.create(Example.prototype);と同じです。 obj.constructor(id) 'です。 –
ああ、私はObject.createでプロトタイプをリンクし、そのインスタンスをファクトリに使用するだけでいいです。 – jhamPac
@MikeCコンストラクター*が 'new'(または' super() 'や' Reflect.construct')で呼び出されなければならないES6を除いて – Bergi