両方のjQueryドキュメントは基本的に同じことを述べているので、2つの間に大きな違いがあるかどうか疑問に思いました。ありがとう!
1440 次
1 に答える
10
これに関するドキュメントは実際には本当に悪いので、ソースコードを調べて見つけたものは次のとおりです。
lock
将来の呼び出しを防ぐだけで、関数の編集fire
を妨げることはありません。add
メソッドの概要は次のとおりです。
empty
-これまでに登録されたコールバックをすべて削除します。lock
-へのそれ以上の呼び出しを防ぎますfire
が、より多くのコールバックをadd
編集できます。disable
fire
- &の両方へのそれ以上の呼び出しを防ぎますadd
。
これをすべて理解するために、memory
フラグの説明から始めましょう:
コールバックオブジェクトがmemory
フラグを使用して構築されている場合、最後の呼び出しを追跡し、fire
後で追加されたコールバックはすぐに呼び出されます。次に例を示します。
var callbacks = $.Callbacks('memory');
callbacks.add(function(){
console.log('first');
});
callbacks.fire();
callbacks.add(function(){
console.log('second');
});
これは、呼び出し後に追加された場合でも、2番目にログに記録されfire
ます。
disable
ただし、それを行うと、メモリが完全に消去されます。別の例を次に示します。
var callbacks = $.Callbacks('memory');
callbacks.add(function(){
console.log('first');
});
callbacks.fire();
callbacks.disable();
callbacks.add(function(){
console.log('second');
});
callbacks.fire();
2番目の関数が追加される前に無効にされているため、これは最初にのみログに記録されます。callbacks
ただし、lock
代わりに使用すると、後で追加された関数が呼び出されます。別の例を次に示します。
var callbacks = $.Callbacks('memory');
callbacks.add(function(){
console.log('first');
});
callbacks.fire();
callbacks.lock();
callbacks.add(function(){
console.log('second');
});
callbacks.fire();
これも2番目にログに記録されますが、1回だけです。オブジェクトがlock
編集されたため、それ以降の呼び出しはfire
無視されます。
于 2012-09-03T19:05:33.643 に答える