【问题标题】:Creating a javascript Object and calling it's method创建一个javascript对象并调用它的方法
【发布时间】:2012-12-28 13:22:01
【问题描述】:

我在一个文件中有以下代码,但它似乎不起作用。

我基本上是在尝试创建一个对象并尝试简单地调用对象的函数并显示它,但它没有这样做,我不知道为什么。

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;
    }
}

我们将不胜感激任何有关尝试使其正常工作的帮助。

谢谢

【问题讨论】:

    标签: javascript class methods


    【解决方案1】:
    return x;
    

    您从未在任何地方创建过x 变量。

    你的意思是return this.x;

    【讨论】:

    • 非常感谢您指出错误。但是,我已经更正了它,它仍然无法正常工作......
    • @Danny 你还需要this.x = this.x - 1;(或只是this.x -= 1;)和this.x = this.x + 1;
    【解决方案2】:

    在您的“移动”功能中,您必须始终参考this.x

        this.x = this.x - 1;
    

    同样,“getXPos”函数也必须:

        return this.x;
    

    【讨论】:

    • +1 表示需要这样做(没有双关语)始终。并举例说明它在其他函数中的外观,以及 getXPos()。
    【解决方案3】:

    在 getXPos() 方法的范围内没有 x 变量。我想你的意思是return this.x

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 2012-10-04
      • 2021-12-21
      相关资源
      最近更新 更多