未捕获的类型错误:对象#<object>没有方法'method'</object>

时间:2013-05-18 11:54:30

标签: 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 playerTurnObj();
turn.setTurn(1);

所以我尝试让脚本在playerTurnObj()中执行setTurn()方法,以便在我正在制作的游戏中保存“转弯”。问题是,它没有做turn.setTurn(1);部分是因为我一直收到上面的错误

我做错了什么?我搜索过,但我找不到问题的确切答案。

3 个答案:

答案 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有两个方法setTurngetTurn,它们对您使用new创建的实例进行操作。

答案 1 :(得分:1)

setTurngetTurn函数是私有的,因此它们返回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 setTurngetTurn方法,可以按如下方式调用它们:

var turn = new playerTurnObj();
turn.setTurn(1);

http://jsfiddle.net/Ht688/

答案 2 :(得分:0)

我用它做的是你需要在函数playerTurnObj()中返回这个对象。所以你的新代码看起来像是:

function playerTurnObj(set_turn) {
    this.playerTurn=set_turn;
    function setTurn(turnToSet) {
        this.playerTurn=turnToSet;
    }
    function getTurn() {
        return this.playerTurn;
    }
    return this;
}