2013-04-01 68 views
1

我有一個「類」叫MyClass的保留和檢索多個JS實例

myClass= (function(config){ 
    var _data, _args, _config; 
    var pubdata; 
    var setData = function(d){_data = d;}; 
    var getData function(){return _data;}; 
    var priFun = function(){}; 
    return { 
     setData: setData 
     getData: getData 
}; 
}) 
在HTML JS塊

,我開始

var obj1 = myClass(config); 
var obj2 = myClass(config); 

globalObjList= []; 
globalObjList.push({'id': 'obj1', 'obj': obj1}); 
globalObjList.push({'id': 'obj2', 'obj': obj2}); 
obj1.setData(data1); 
obj2.setData(data2); 

以後,當用戶執行一些動作,我想根據用戶的選擇檢索obj1或obj2,這樣我就可以使用與對象關聯的數據進行進一步的操作。

例如通過點擊button1,檢索obj1。我希望像

var obj = getInstanceById('btn1'); 
obj.getData(); //this should return me data1 

我不知道如何getInstanceById功能幹活不喜歡的東西

getInstanceById = function(id){ 
    //match the id with the id in globalObjList array, and return the obj 
} 

但是,這樣一來,當得到的obj這樣,做的getData( )它不是正確的obj,我想要...

我怎麼能做到這一點,而不是聲明obj1和obj2全局變量?

+0

@axrwkr出於測試的目的,它可以被硬編碼,當點擊btn1時,發送數據'obj1'來檢索obj obj1。可能會有某種類型的映射關聯到id和obj,如圖所示 {'id':'obj1','obj':obj1} – snailclimbingtree

+0

@axrwkr'getInstanceById'是我需要的一些功能,這個函數的主要目的是通過某種id來查找obj。假設我有3個div,並且每個div都包含從myClass啓動的實例。我想要在div id中傳遞,然後獲取關聯的實例obj。 – snailclimbingtree

回答

0

您將需要在與new實例相同的閉包中設置事件處理程序。這將允許您訪問處理程序中的變量。