Backbone.js ソースを読んでいて、これに混乱しています
var triggerEvents = function(events, args) {
var ev, i = -1, l = events.length;
switch (args.length) {
case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx);
return;
case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, args[0]);
return;
case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, args[0], args[1]);
return;
case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, args[0], args[1], args[2]);
return;
default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args);
}
};
いくつか質問があります-
- なぜこれがイベントをトリガーするための最適化なのですか?(注釈付きソースが言うように)?
- ev.ctx とは?
- .callback() とは?
この構造は、機会があれば、速度のために apply ではなく常に call を使用する必要があることを意味します。この関数の構造は、「引数がいくつあるかわかっている場合は、代わりに call を使用し、apply を使用してください」と言っているようです。 apply を最後まで使用できる場合。
要するに、この関数の目的が何なのか、なぜこのように書かれているのかわかりません。