2013-04-01 48 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实例相同的闭包中设置事件处理程序。这将允许您访问处理程序中的变量。