跟上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是一个函数数组,但是也没有用。
感谢您的帮助。
答案 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)循环遍历变量的所有属性,并获取属性的键。