JavaScript - 使用对象和方法?

问题描述 投票:0回答:4

当我调用方法

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
console.log(result);

javascript object
4个回答
2
投票

我发现发布的代码没有任何问题,因此我将猜测您未显示的代码中的内容:

缺少的计算代码是否执行ajax请求(或其他一些异步处理)并在其成功函数中设置

this.result
?如果是这样,在您的 aysnc 处理运行其成功或失败函数来更新
getResult()
之前,
this.result
函数将立即返回。如果您的评论中提到的日志记录发生在成功/失败函数中,那么它将具有正确的值。


1
投票

奇怪。它对我有用:

http://jsfiddle.net/y5Yk7/


-1
投票

省略成功、失败、超时和无周围的引号应该可以使其正常工作。

我已经设置了一个 JSFiddle 示例;它对我来说工作得很好。


-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();
© www.soinside.com 2019 - 2024. All rights reserved.