両方のjQueryドキュメントは基本的に同じことを述べているので、2つの間に大きな違いがあるかどうか疑問に思いました。ありがとう!
1440 次
1 に答える
10
これに関するドキュメントは実際には本当に悪いので、ソースコードを調べて見つけたものは次のとおりです。
lock将来の呼び出しを防ぐだけで、関数の編集fireを妨げることはありません。add
メソッドの概要は次のとおりです。
empty-これまでに登録されたコールバックをすべて削除します。lock-へのそれ以上の呼び出しを防ぎますfireが、より多くのコールバックをadd編集できます。disablefire- &の両方へのそれ以上の呼び出しを防ぎます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 に答える