两者的 jQuery 文档基本上都说明了相同的事情,所以我想知道两者之间是否有任何重大差异(如果有的话)。谢谢!
问问题
1440 次
1 回答
10
这方面的文档实际上非常糟糕,所以这是我通过研究源代码发现的:
lock
只阻止未来的fire
调用,但不阻止函数被add
编辑。
以下是这些方法的简要介绍:
为了理解这一切,让我们从对memory
标志的解释开始:
如果回调对象是用memory
标志构造的,它会跟踪最后一次fire
调用,以后添加的任何回调都会立即被调用。这是一个例子:
var callbacks = $.Callbacks('memory');
callbacks.add(function(){
console.log('first');
});
callbacks.fire();
callbacks.add(function(){
console.log('second');
});
这也会记录second,即使它是在fire
调用之后添加的。
但是,如果您disable
这样做,它将完全擦除内存。这是另一个例子:
var callbacks = $.Callbacks('memory');
callbacks.add(function(){
console.log('first');
});
callbacks.fire();
callbacks.disable();
callbacks.add(function(){
console.log('second');
});
callbacks.fire();
这只会记录first,因为callbacks
在添加第二个功能之前已被禁用。
但是,如果您改用它,则将lock
调用稍后添加的函数。这是另一个例子:
var callbacks = $.Callbacks('memory');
callbacks.add(function(){
console.log('first');
});
callbacks.fire();
callbacks.lock();
callbacks.add(function(){
console.log('second');
});
callbacks.fire();
这也会记录second,但只有一次;由于对象被lock
编辑,任何进一步的调用都fire
将被忽略。
于 2012-09-03T19:05:33.643 回答