Javascript 未捕获类型错误:对象#<;对象>;没有方法';方法';
这是对象“playerTurnObj”Javascript 未捕获类型错误:对象#<;对象>;没有方法';方法';,javascript,object,methods,set,typeerror,Javascript,Object,Methods,Set,Typeerror,这是对象“playerTurnObj” function playerTurnObj(set_turn) { this.playerTurn=set_turn; function setTurn(turnToSet) { this.playerTurn=turnToSet; } function getTurn() { return this.playerTurn; } } 这就是我用它做的 var turn = new
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()方法,以在我正在制作的游戏中保存一个“回合”。问题是,它不做旋转。setTurn(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
创建的实例进行操作setTurn
和getTurn
函数是私有的,因此它们返回未定义的
,而不是调用函数。你可以做:
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);
我从中了解到,您需要在函数playerTurnObj()中返回对象。因此,您的新代码将类似于:
function playerTurnObj(set_turn) {
this.playerTurn=set_turn;
function setTurn(turnToSet) {
this.playerTurn=turnToSet;
}
function getTurn() {
return this.playerTurn;
}
return this;
}
这里的其他建议也很有效,有很多方法可以实现这一点。usindprototype的优点是不需要为每个实例填充内存。