JavaScript - 使用对象和方法?

时间:2011-11-30 03:56:10

标签: javascript object

当我调用方法getResult时,它返回一个未定义的值。我做错了什么?

var MyObjectResult = {"Success":1, "Fail":2, "Timeout":3, "None":4}

function MyObject()
{
   this.result = MyObjectResult.None;
   this.timout = 15;

   this.getResult = function ()
   {
      // Some calculation here and changing result
      // Logging (this.result shows that result has value of 1)
      this.result = MyObjectResult.Success;
      return this.result;
   }
}

var myObject = new MyObject();
var result = myObject.getResult();
// result is undefined

4 个答案:

答案 0 :(得分:2)

我认为发布的代码没有任何问题,所以我将猜测代码中没有显示的内容:

缺少的计算代码是否正在执行ajax请求(或其他一些异步处理)并在其成功函数中设置this.result?如果是,则在您的aysnc处理运行其成功或失败功能以更新getResult()之前,this.result函数将立即返回。如果注释中提到的日志记录发生在成功/失败函数中,那么它将具有正确的值。

答案 1 :(得分:1)

奇怪。它为我工作:

http://jsfiddle.net/y5Yk7/

答案 2 :(得分:-1)

成功,失败,超时和无周围留下引号应该让它正常工作。

我已经设置了JSFiddle example;它对我来说非常好。

答案 3 :(得分:-1)

也许'this'在你的功能中可能有不同的含义?这样:

var MyObjectResult = {"Success":1, "Fail":2, "Timeout":3, "None":4}

function MyObject()
{
   this.result = MyObjectResult.None;
   this.timout = 15;
   var mythis = this;
   this.getResult = function ()
   {
      mythis.result = MyObjectResult.Success;
      return mythis.result;
    }
}

var myObject = new MyObject();
var result = myObject.getResult();