我最近開始在Javascript中學習模式,並嘗試通過模擬「類」來了解它是如何工作的。所以很可能這個錯誤是由於對如何執行的錯誤理解而出現的。訪問回調中的類屬性
我有以下的一般類:
var Collection = (function(){
function Collection(){
this.collection = {};
}
var p = Collection.prototype;
p.callback = function(data){collection = data;}
return Collection;
})();
API是一個單例類。 Get_Data方法將執行一些Ajax調用,但到目前爲止它只是一個對象。 singleton類是如下:
var WebService = (function(){
var instance;
var init = function(){
return {
get_data: function(callback){
// Dump data without accessing the Server
callback({'id':1234, 'data':"hello world"})
}
}
}
return {
get_instance: function(){
if(!instance)
instance = init();
return instance;
}
}
})();
在某些時候,我創建了一個集合類和一些源獲取一些數據(這將是從Web服務,但到目前爲止,我只是用一個對象)。
var collection_objects = new Collection();
var api = WebService.get_instance();
api.get_data(collection_objects.callback);
我使用的應該更新模型數據的收集數據的回調方法(名稱回調簡單)。我的問題是,在回調中我沒有訪問收藏屬性。實際上我創建了一個名爲collection的新對象。在某些時候,我認爲我應該使用「this」,但由於我將使用Ajax調用,因此我必須將「this」保存在另一個通常稱爲「self」的vble中。這是迄今爲止我讀過的理論,但我必須在哪裏使用「自我」?這是方法嗎?
添加「var self = this;」在某個地方一級。然後在你的回調函數中使用「self.collection」。 –
@MarvinSmit你是什麼意思與一個級別?因爲我嘗試將它添加到構造函數中,但該對象有兩個屬性:collection和「self」(「self」將包含另一個集合和「self」等)。它創建遞歸對象包含另一個,另一個,等等......是嗎? – kitimenpolku