}
//…省略部分代码
};
};
//注册到window下
window.Callbacks = Callbacks;
}(window));
auto:
auto(memory)模型在jQuery中是以memory命名的,最初被这个命名给混淆了,仔细看了用法才确定改成auto——它的作用就是“第一次fire()之后,后续add()的函数自动执行”,以下情况可以用到:当添加一组函数到Callbacks之后,临时又需要追加一个函数,那么即时运行这个新追加的函数——不得不说,为了使用的便利,这个模式变得有点难以理解。实现起来就是在add()的时候判断是否是auto模型,如果是auto模型,则执行这个函数。 但是,我们需要在第一次fire()之后才自动执行,没有fire()过的Callbacks并不该被自动执行,并且,每次自动执行后,还需要把最后一次使用的参数传递传递给这个自动执行的函数。
或许大家会想到如下代码:
(function (window, undefined) {
var Callbacks = function (once, auto) {
var list = [],
fired,
lastData;//保存最后一次执行的参数
return {
add: function (fn) {
if (list) {
list.push(fn);
// — 自动执行模式
//最后一次使用的参数传递过去,这里丢失了Context(上下文)










