两者的jQuery文档基本上都说明了同样的事情,所以我想知道两者之间是否存在任何重大差异(如果有的话).谢谢!
解决方法
关于这个的文档实际上非常糟糕,所以这是我在
studying the source code找到的:
> empty
– 删除目前已注册的任何回调.
> lock
– 防止进一步调用触发,但允许添加更多回调.
> disable
– 防止进一步打电话给火警和加.
要理解这一切,让我们从the memory
flag的解释开始:
如果回调对象是使用内存标志构造的,它将跟踪最后一次触发调用,稍后添加的任何回调将立即被调用.这是an example:
var callbacks = $.Callbacks('memory'); callbacks.add(function(){ console.log('first'); }); callbacks.fire(); callbacks.add(function(){ console.log('second'); });
这也将记录第二,即使它是在火警之后添加的.
如果你禁用它,它将完全擦除内存.这是another example:
var callbacks = $.Callbacks('memory'); callbacks.add(function(){ console.log('first'); }); callbacks.fire(); callbacks.disable(); callbacks.add(function(){ console.log('second'); }); callbacks.fire();
但是,如果您使用锁定它,则会调用稍后添加的函数.这是another example:
var callbacks = $.Callbacks('memory'); callbacks.add(function(){ console.log('first'); }); callbacks.fire(); callbacks.lock(); callbacks.add(function(){ console.log('second'); }); callbacks.fire();
这也将记录第二,但只记录一次;由于对象已被锁定,因此将忽略对火的任何进一步调用.