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?