new Function(...)
を使用してプロトタイプ関数を動的に設定しようとしています。私は、次の(ES6)を試みた:Javascriptプロトタイプを動的に設定する
export default class AI {
constructor(algObj, player) {
this.player = player;
this.algObj = algObj;
//create the shoot and placeShips prototypes form the this.algObj property
this.prototype.initialize = new Function(this.algObj.initialize);
this.prototype.shoot = new Function(this.algObj.shoot);
this.prototype.placeShips = new Function(this.algObj.placeShips);
this.initialize();
}
}
使用例:私は、2つのアルゴリズムを戦いシミュレータに渡されるリソースようなアルゴリズムを格納するマイクロサービスを有しています。
これを試してみるとthis.prototype
はundefined
です。コンストラクタの実行が完了するまで、AI
オブジェクトが完全に定義されていないため、これが当てはまると思う唯一の理由があります。
ここでやろうとしているように、プロトタイプ関数を設定するにはどうすればよいですか?
UPDATE:コンストラクタが呼び出されると
this.__proto__.initialize = new Function(this.algObj.initialize);
this.__proto__.shoot = new Function(this.algObj.shoot);
this.__proto__.placeShips = new Function(this.algObj.placeShips);
AIを1つのオブジェクトインスタンスにのみ使用する予定ですか? – trincot
私は自分の編集と更新にユースケースを追加しました。 – frankgreco
ゲームごとに1つのAIインスタンスがあり、シミュレーションごとに複数のゲームが存在します。 – frankgreco