0

我在一个返回方法的类上创建了一个 getter 字段,该方法由一些输入调用。这是方法:

private gainItem(rewardItem: Item) {
  console.log(this);
  //Give item to user
}

这是包含此方法的类的 getter 字段:

private get npcPlayerInterface(): NpcPlayerInterface {
  return {
    gainItem: this.gainItem,
  };
}

然后我将 getter 传递给另一个类,如下所示:

this.npcChatState = new NpcChatState(this.npcPlayerInterface);

最后,这是在npcChatState类中调用它的方式:

npcPlayerInterface.gainItem({ id: ItemId.CAR_BLUE, name: 'Blue CAR' });

console.log(this)语句显示this关键字引用另一个对象,而不是我想要的对象。如何在不使用bind()或此别名的情况下解决此问题?

4

1 回答 1

0

只需使用箭头语法:

private gainItem = (rewardItem: Item) => {
    console.log(this);
}
于 2021-12-24T13:11:42.393 回答