2011-11-30 40 views
1

當我調用方法getResult時,它返回一個未定義的值。我究竟做錯了什麼?JavaScript - 使用對象和方法?

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 
+0

我沒有看到上面的代碼錯誤。問題可能在於缺少計算代碼嗎?如果你按原樣運行它,它會對你有用嗎? – nnnnnn

回答

2

我看沒有錯張貼的代碼,所以我要採取什麼是你不顯示的代碼的猜測:

不知去向計算代碼做一個Ajax請求(或其他一些異步處理),並設置this.result的成功功能?如果是這樣,那麼getResult()函數將立即返回,然後您的aysnc處理已運行其成功或失敗功能來更新this.result。如果評論中提到的日誌記錄發生在成功/失敗函數中,那麼它將具有正確的值。

-1

離開了引號成功,失敗,超時和無應該得到它的工作。

我已經設置了JSFiddle example;它對我來說工作得很好。

+0

仍然返回undefined – aryaxt

+0

您確定該代碼導致錯誤?你有沒有試圖運行我提到的小提琴?這對我來說非常好...... –

+3

引用鍵與它無關。 –

1

Strange.Its工作對我來說:

http://jsfiddle.net/y5Yk7/

+0

同樣在這裏,看到我的答案... –

+0

是的馬呂斯剛纔我試圖爲我們工作..希望他面臨的瀏覽器兼容性問題:-) – Unknown

-1

也許 '這個' 可以有你的函數中有不同的含義?所以:

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(); 
+0

(我沒有downvote,但)代碼如問題中所示應該不會有'this'調用'getResult()'作爲'myObject'的一個屬性的問題,以確保'this'在函數中具有正確的值。 – nnnnnn

+0

是的,我的錯誤是,之後我對'this'進行了一些研究,因爲我更熟悉jquery的$(this)(是的,我知道它們是相關的)。我認爲它可能類似於我自己遇到的一些情況,但事實證明,該對象被調用/創建的方式應該可以正常工作。 *聳肩* –