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

在javascript中,如何调用动态添加到对象中的函数,javascript,Javascript,跟上Javascript学习的步伐。我正在看下面的代码,其目的是向对象添加函数以保持其唯一性,类似于向事件类型添加回调函数 var store = { nextId: 1, cache: {}, add: function(fn) { if(!fn.id){ fn.id = store.nextId++; return !!(store.cache[fn.id] = fn); } }

跟上Javascript学习的步伐。我正在看下面的代码,其目的是向对象添加函数以保持其唯一性,类似于向事件类型添加回调函数

var store = {
    nextId: 1,
    cache: {},
    add: function(fn) {
        if(!fn.id){
            fn.id = store.nextId++;
            return !!(store.cache[fn.id] = fn);
        }
    }
};
代码运行良好,但现在我想执行这些函数,但我还没有弄清楚这部分

到目前为止,我已经尝试直接调用这两个函数作为store.cache对象的方法,这给了我错误“object”没有方法“blah”。我还试着做一个循环,好像store.cache是一个函数数组,但也不起作用


谢谢您的帮助。

我想向
存储添加一个方法,类似这样

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
获取应应用于函数的上下文(范围)和参数。

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

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

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

可以这样调用函数:
store.cache[1]()
store.cache[2]()
,等等。