在javascript中,如何调用动态添加到对象中的函数
跟上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); } }
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]()
,等等。