Используются две анонимные функции, которые оцениваются только один раз во время инициализации, и для каждого последующего вызова оценка не требуется. Эффективность относительно высокая. Вот пример добавления события
Скопируйте код кода следующим образом:
// Метод 1
функция addEvent(el, type, fn) {
если (el.addEventListener) {
el.addEventListener(тип, fn, false);
}еще{
el.attachEvent('on'+type, fn)
}
}
// Метод 2
вар addEvent = document.addEventListener?
функция(el, type, fn) {el.addEventListener(type, fn, false);}:
function(el, type, fn) {el.attachEvent('on'+type, fn)};
Метод 1 выносит суждение внутри функции. Каждый раз, когда событие добавляется к элементу, его необходимо оценить один раз, что относительно неэффективно.
jQuery 1.6.1/Prototype 1.7/Mootools 1.3/tangram 1.3.6/reg.js/right.js используют этот метод ветвления.
Метод 2 использует две анонимные функции, которые оцениваются только один раз во время инициализации, и для каждого последующего вызова оценка не требуется. Эффективность относительно высокая.
Ext/kissy/qwrap использует этот метод записи ветвей.