Функциональный jQuery: пользовательские события или функции? - PullRequest
2 голосов
/ 10 августа 2009

Будучи новичком в функциональном программировании, я работал над javascript своего приложения (исключительно с использованием jQuery) и удивлялся, как система событий jQuery связана с его парадигмой функционального программирования.

У меня есть функция setupAccountHeader, которая может легко быть событием с привязкой к документу, например

$(document).bind('setupAccountHeader', function() {
    blah, blah, blah;
});

OR

var setupAccountHeader = function() {
    blah, blah, blah;
};

Затем либо срабатывает, либо вызывается при необходимости.

Итак, у меня два вопроса:

1) Какой стиль предпочтителен для функционального jQuery или это исключительно вопрос вкуса / личного стиля? Как насчет последствий для архитектуры с большим изображением?

2) Есть ли хорошие ресурсы для функционально стилизованного jQuery? Я чувствую, что это намерение Джона Резига, но я не могу найти много информации или руководств о том, что это означает при реализации.

Ответы [ 2 ]

1 голос
/ 10 августа 2009

Хорошая особенность второго стиля в том, что он будет отображаться в стеке вызовов отладчика со своим именем, в отличие от «анонимного», что я считаю немного более полезным.

Вы можете достичь вышеизложенного вместе с добавленными механизмами событий jQuery (как сказал Эльзо) со следующим:

$(document).bind('setupAccountHeader', setupAccountHeader);
0 голосов
/ 10 августа 2009
  • Официальный метод привязки события в jQuery - это первая версия, поэтому у вас есть похожие методы для привязки и отмены привязки событий. Я думаю, что это не слишком личное предпочтение, так как оно помогает читабельности кода, получая поддержку вашего кода и используя другие функции, связанные и включенные в jQuery, такие как предотвращение всплытия событий по умолчанию. Второй пример первого вопроса верен из JavaScript, но этот стиль нигде не используется в документации jQuery.

Обновление

Если вы хотите связать события и использовать преимущества нормализованной системы событий , вы будете использовать первую версию для обычной (размытие, фокус, загрузка, изменение размера, прокрутка, выгрузка, перед загрузкой, щелкните, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, изменить, выбрать, отправить, нажатие клавиши, нажатие клавиши, keyup, error) или ваши собственные события.

Они на самом деле не похожи. Чтобы быть похожим во втором, вам нужно приложить к документу некоторые события. Попробуйте отменить их, чтобы получить идею.

// first version
$(document).unbind('setupAccountHeader'); // will cancel the binding of some action
// second version
setupAccountHeader = null; // will just cancel a variable 

Другая версия - это просто замыкание, которое вы можете использовать повсюду в JavaScript, и оно также используется в этом случае. У него нет определенного значения без контекста.

  • Я не очень понимаю второй вопрос. Может быть, вы можете подробно описать, что вы имеете в виду. Я не являюсь носителем английского языка.
...