两者的jQuery文档基本上都说明了同样的事情,所以我想知道两者之间是否存在任何重大差异(如果有的话)。谢谢!
答案 0 :(得分:10)
关于这个的文档实际上非常糟糕,所以这是我在studying the source code找到的内容:
以下是方法的快速概述:
要理解这一切,我们首先解释一下the memory
flag:
如果使用memory
标志构造回调对象,它将跟踪最后fire
次呼叫,并且将立即调用稍后添加的任何回调。这是an example:
var callbacks = $.Callbacks('memory');
callbacks.add(function(){
console.log('first');
});
callbacks.fire();
callbacks.add(function(){
console.log('second');
});
这也会记录 第二 ,即使它是在fire
来电后添加的。
如果你disable
,它会完全擦除内存。这是another example:
var callbacks = $.Callbacks('memory');
callbacks.add(function(){
console.log('first');
});
callbacks.fire();
callbacks.disable();
callbacks.add(function(){
console.log('second');
});
callbacks.fire();
这只会记录 第一个 ,因为在添加第二个功能之前已禁用callbacks
。
但是,如果您使用lock
,则稍后会添加添加的功能。这是another example:
var callbacks = $.Callbacks('memory');
callbacks.add(function(){
console.log('first');
});
callbacks.fire();
callbacks.lock();
callbacks.add(function(){
console.log('second');
});
callbacks.fire();
这也会记录 秒 ,但只记录一次;由于对象是lock
,因此对fire
的任何进一步调用都将被忽略。