Javascript 相同 class 中的调用方法未定义?
Javascript calling method in same class comes undefined?
所以我对 js 比较陌生,我正在尝试在我的 'recordInputs' class 中调用一个方法 'lerp'。 recordInputs class 在其他地方被调用并且在没有 lerp 函数的情况下工作正常。问题是,当 playerImage.x/y 等于 lerp 函数时,会出现控制台错误,并表示 'lerp' 方法未定义...
代码如下:
class PlayerMoveClass {
lerp(start, end, time) {
return (1-time) * start + time * end;
}
RecordInputs(event) {
currentXPos = playerImage.x;
currentYPos = playerImage.y;
xMousePosition = event.clientX;
yMousePosition = event.clientY;
playerImage.x = lerp(currentXPos, xMousePosition, 0.1);
playerImage.y = lerp(currentYPos, yMousePosition, 0.1);
console.log("X POS: " + playerImage.x + " Y POS: " + playerImage.y);
}
}
在此先感谢任何可以提供帮助的人!
引用 class 成员需要使用 this
关键字。
你的情况:
playerImage.x = this.lerp(currentXPos, xMousePosition, 0.1);
playerImage.y = this.lerp(currentYPos, yMousePosition, 0.1);
如果您使用 RecordInputs
作为事件侦听器(如评论中所建议),您可能还需要将此构造函数添加到 class 以正确绑定 this
:
constructor() {
this.RecordInputs = this.RecordInputs.bind(this);
}
所以我对 js 比较陌生,我正在尝试在我的 'recordInputs' class 中调用一个方法 'lerp'。 recordInputs class 在其他地方被调用并且在没有 lerp 函数的情况下工作正常。问题是,当 playerImage.x/y 等于 lerp 函数时,会出现控制台错误,并表示 'lerp' 方法未定义...
代码如下:
class PlayerMoveClass {
lerp(start, end, time) {
return (1-time) * start + time * end;
}
RecordInputs(event) {
currentXPos = playerImage.x;
currentYPos = playerImage.y;
xMousePosition = event.clientX;
yMousePosition = event.clientY;
playerImage.x = lerp(currentXPos, xMousePosition, 0.1);
playerImage.y = lerp(currentYPos, yMousePosition, 0.1);
console.log("X POS: " + playerImage.x + " Y POS: " + playerImage.y);
}
}
在此先感谢任何可以提供帮助的人!
引用 class 成员需要使用 this
关键字。
你的情况:
playerImage.x = this.lerp(currentXPos, xMousePosition, 0.1);
playerImage.y = this.lerp(currentYPos, yMousePosition, 0.1);
如果您使用 RecordInputs
作为事件侦听器(如评论中所建议),您可能还需要将此构造函数添加到 class 以正确绑定 this
:
constructor() {
this.RecordInputs = this.RecordInputs.bind(this);
}