在javascript中如何调用动态添加到对象的函数

时间:2012-08-07 16:11:05

标签: javascript

跟上Javascript学习的努力。我正在查看以下代码,该代码旨在向对象添加函数以保持它们的唯一性,例如将回调函数添加到事件类。

var store = {
    nextId: 1,
    cache: {},
    add: function(fn) {
        if(!fn.id){
            fn.id = store.nextId++;
            return !!(store.cache[fn.id] = fn);
        }
    }
};

代码运行良好,但现在我想执行这些功能,但我无法弄清楚那部分。

到目前为止,我试图直接将这两个函数作为store.cache对象的方法调用,它给出了错误“对象#没有方法'blah'”。我也尝试做一个循环,好像store.cache是​​一个函数数组,但是也没有用。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我会向store添加一个方法,类似这样的

executeFunction: function(id) {
   var fn = store.cache[id];
   if (fn) return fn();
   else throw 'could not find function for id...';
}

然后你就可以了

var result = store.executeFunction(someId);

你可以扩展它,以便你的executeFunction获取应该应用于函数的上下文(范围)和参数。

答案 1 :(得分:0)

有更简单的方法来存储回调列表,但要解决您的问题,请执行以下操作:

var i;
for (i in store.cache) {
    store.cache[i]();
}

for(i in variable)循环遍历变量的所有属性,并获取属性的键。