gpt4 book ai didi

javascript - 动态设置 Javascript 原型(prototype)

转载 作者:行者123 更新时间:2023-11-30 11:56:27 25 4
gpt4 key购买 nike

我正在尝试使用 new Function(...) 动态设置原型(prototype)函数。我尝试了以下 (es6):

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.prototypeundefined。我认为可能是这种情况的唯一原因是因为 AI 对象直到构造函数执行完毕后才完全定义。

我将如何设置原型(prototype)函数,就像我在这里尝试做的那样?

更新:

this.__proto__.initialize   = new Function(this.algObj.initialize);
this.__proto__.shoot = new Function(this.algObj.shoot);
this.__proto__.placeShips = new Function(this.algObj.placeShips);

最佳答案

当调用构造函数时,您已经拥有了正在创建的对象的实例,因此您可以简单地修改实例的方法而无需触及原型(prototype):

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.initialize = new Function(this.algObj.initialize);
this.shoot = new Function(this.algObj.shoot);
this.placeShips = new Function(this.algObj.placeShips);

this.initialize();
}
}

关于javascript - 动态设置 Javascript 原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37776910/

25 4 0