所以这里是对象'playerTurnObj'
function playerTurnObj(set_turn) {
this.playerTurn=set_turn;
function setTurn(turnToSet) {
this.playerTurn=turnToSet;
}
function getTurn() {
return this.playerTurn;
}
}
这就是我正在做的事情
var turn = new playerTurnObj();
turn.setTurn(1);
所以我尝试让脚本在playerTurnObj()中执行setTurn()方法,以便在我正在制作的游戏中保存“转弯”。问题是,它没有做turn.setTurn(1);部分是因为我一直收到上面的错误
我做错了什么?我搜索过,但我找不到问题的确切答案。答案 0 :(得分:1)
这不是JavaScript的工作方式。您的“构造函数”函数包含在playerTurnObj
范围之外不可见的内联函数。因此,您的变量turn
没有定义方法setTurn
,因为错误消息正确陈述。可能你想要这样的东西:
function playerTurnObj(set_turn) {
this.playerTurn=set_turn;
}
playerTurnObj.prototype = {
setTurn: function(turnToSet) {
this.playerTurn=turnToSet;
},
getTurn: function() {
return this.playerTurn;
}
};
现在,您的变量turn
有两个方法setTurn
和getTurn
,它们对您使用new
创建的实例进行操作。
答案 1 :(得分:1)
setTurn
和getTurn
函数是私有的,因此它们返回undefined
而不是调用函数。你可以这样做:
function playerTurnObj(set_turn) {
this.playerTurn=set_turn;
this.setTurn = setTurn;
this.getTurn = getTurn;
function setTurn(turnToSet) {
this.playerTurn=turnToSet;
}
function getTurn() {
return this.playerTurn;
}
}
然后您拥有public
setTurn
和getTurn
方法,可以按如下方式调用它们:
var turn = new playerTurnObj();
turn.setTurn(1);
答案 2 :(得分:0)
我用它做的是你需要在函数playerTurnObj()中返回这个对象。所以你的新代码看起来像是:
function playerTurnObj(set_turn) {
this.playerTurn=set_turn;
function setTurn(turnToSet) {
this.playerTurn=turnToSet;
}
function getTurn() {
return this.playerTurn;
}
return this;
}