2011-01-28 65 views
2

我試圖對我創建的遊戲實現一種多人遊戲擴展。在XMLHttpRequest之後,返回遊戲ID,即多人遊戲會話的ID。使用函數設置對象的成員失敗

我用下面的代碼,其中多人是一個靜態類:

var Multiplayer = { 
    baseURL: 'http://127.0.0.1:8888/m', 
    gameID: -1, 

    create: 
    function() { 
     $.get(this.baseURL, {'a':'c'}, function(text) { 
      this.gameID = parseInt(text); 
     }); 
    } 
} 

它失敗,因爲它似乎this.gameID = parseInt(text)不能使用。當我將其更改爲Multiplayer.gameID = parseInt(text)時,它就像一個魅力。

看起來好像this.gameID是未定義的,而Multiplayer.gameID都可以寫入和讀取。

這是正確的嗎?如果是這樣,爲什麼會出現這種情況?

回答

2

Javascript沒有類,而this的行爲不像您期望來自C++或Java背景。試着改變你的創造功能,這一點:

function() { 
    var that = this; 
    $.get(this.baseURL, {'a':'c'}, function(text) { 
     that.gameID = parseInt(text); 
    }); 
} 

的關鍵點是,每一個功能()被調用與特定this值,它可能不是相同的值封閉函數的。

+0

我看到了,我使用了`console.log(this)`,它沒有返回Multiplyer對象,而是返回了JQuery AJAX類。感謝您的解決方案。 – pimvdb 2011-01-28 13:33:13

相關問題