4

1 つのファイルに次のコードがありますが、動作していないようです。

私は基本的にオブジェクトを作成しようとしていて、単にオブジェクトの関数を呼び出して表示しようとしていますが、そうではなく、理由がわかりません。

var mice = new Mice(10, 10);
function Mice(posX, posY)
{
    this.x = posX;
    this.y = posY;
    this.moveLeft = function ()
    {
        this.x = x - 1;
    }

    this.moveRight = function ()
    {
        this.x = x + 1;
    }

    this.getXPos = function ()
    {
        return this.x;
    }
}

document.onkeydown = function(e)
{
    //document.getElementById("mainBody").innerHTML = e.keyCode;

    switch(e.keyCode)
    {
    case 37:
        //document.getElementById("mainBody").innerHTML = "you have pressed left";
        mice.moveLeft();
        document.getElementById("mainBody").innerHTML = mice.getXPos();
        break;
        default:
    //do nothing
    break;
    }
}

これを機能させるための助けをいただければ幸いです。

ありがとう

4

3 に答える 3

5

「移動」機能では、一貫して以下を参照する必要がありthis.xます。

    this.x = this.x - 1;

同様に、「getXPos」関数も次のようにする必要があります。

    return this.x;
于 2013-01-14T15:03:33.780 に答える
3
return x;

xどこにも変数を作成したことはありません。

つまりreturn this.x;

于 2013-01-14T15:02:34.307 に答える
1

getXPos()メソッドのスコープにx変数はありません。私はあなたがするつもりだと思いますreturn this.x

于 2013-01-14T15:05:01.177 に答える