我喜欢在私有命名空间中编写回调函数,然后通过引用调用它们。例如
var myCallback = function() {
};
// ... somewhere else in the class.
SomeOtherObject.doSomething(myCallback);
这使得代码更整洁,更可扩展。但是,当我需要将任何参数从原始函数传递给回调时,它会变得混乱,我必须将回调引用包含在闭包中。例如
var myCallback = function(a_var, another_var) {
};
// ... somewhere else in the class.
a_var = "something";
SomeOtherObject.doSomething(function(another_var) {
myCallback(a_var, another_var);
};
这导致回调需要两个函数调用而不是一个,从而产生开销。这也意味着我有一个未记录的闭包匿名函数 - 或者我记录了这两个函数。(与其说是缺少的函数定义不如参数定义那么烦人。)如果回调很小——就像好的函数一样——那么把它放在私有范围内似乎不值得。
做这个的最好方式是什么?