Javascript - 将函数添加到原型导致 TypeError
Javascript - adding function to prototype results in TypeError
我正在尝试向 BattleState
对象添加一个函数。
我正在使用原型方法,因为我不希望函数被序列化,如 Use of 'prototype' vs. 'this' in JavaScript?
中所述
这就是我设置代码的大致方式,当我调用 getPlayerStateFromBattleState
函数时,我收到一条错误消息 "TypeError: Cannot find default value for object."
我假设这是我添加到无法找到的原型的功能,但我可能是错的。有谁知道是什么原因造成的?
function BattleState() {
this.player1 = new PlayerState();
this.player1.id = 1;
this.player2 = new PlayerState();
this.player2.id = 2;
};
BattleState.prototype.getPlayerStateFromBattleState = function(thisPlayerId) {
if (this.player1.id == thisPlayerId) {
return this.player1;
} else if (this.player2.id == thisPlayerId) {
return this.player2;
} else {
// Error
}
}
var battleState = new BattleState();
// This line resutls in "TypeError: Cannot find default value for object."
var playerState = battleState.getPlayerStateFromBattleState(1);
我尝试重现问题:
// This line resutls in "TypeError: Cannot find default value for object."
console.log(battleState.getPlayerStateFromBattleState(2));
https://jsfiddle.net/kg85w55e/
给定的代码刚刚工作。我认为您的 PlayerState Class 中有些东西。
您能否调整您的问题并包括您的 PlayerState Class?
我正在尝试向 BattleState
对象添加一个函数。
我正在使用原型方法,因为我不希望函数被序列化,如 Use of 'prototype' vs. 'this' in JavaScript?
这就是我设置代码的大致方式,当我调用 getPlayerStateFromBattleState
函数时,我收到一条错误消息 "TypeError: Cannot find default value for object."
我假设这是我添加到无法找到的原型的功能,但我可能是错的。有谁知道是什么原因造成的?
function BattleState() {
this.player1 = new PlayerState();
this.player1.id = 1;
this.player2 = new PlayerState();
this.player2.id = 2;
};
BattleState.prototype.getPlayerStateFromBattleState = function(thisPlayerId) {
if (this.player1.id == thisPlayerId) {
return this.player1;
} else if (this.player2.id == thisPlayerId) {
return this.player2;
} else {
// Error
}
}
var battleState = new BattleState();
// This line resutls in "TypeError: Cannot find default value for object."
var playerState = battleState.getPlayerStateFromBattleState(1);
我尝试重现问题:
// This line resutls in "TypeError: Cannot find default value for object."
console.log(battleState.getPlayerStateFromBattleState(2));
https://jsfiddle.net/kg85w55e/
给定的代码刚刚工作。我认为您的 PlayerState Class 中有些东西。 您能否调整您的问题并包括您的 PlayerState Class?