Как правильно установить события JS - PullRequest
0 голосов
/ 11 января 2012

В rails.js, который поставляется с моими рельсами (3.0.x, все еще с прототипом), я вижу следующую структуру:

(function() {
// ...
document.on("click", ...
})();

Что именно достигается за счет упаковки всего кода в анонимной функции? Это правильный способ отложить код до тех пор, пока не загрузится dom или только объект документа?

В моем проекте у меня в настоящее время много кода установки внутри блока Event.observe(document, 'dom:loaded', function() { ... }. Мне было интересно, должен ли я принять приведенный выше шаблон при рефакторинге своего кода.

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Вы наткнулись на шаблон модуля .Это полезно, потому что переменные внутри немедленно вызываемой функции являются локальными и не загрязняют глобальное пространство имен.

(function(){
    var something = 17;
    //can use something inside here
}());

//but not here anymore

Нет, нет разницы во времени, поскольку функция вызывается немедленно (в конечном итоге () бит)

1 голос
/ 11 января 2012

Самовывозная анонимная функция немедленно запустит то, что внутри, что никак не связано с задержкой кода.

Чтобы блок кода внутри был выполнен после того, как DOM готов, у вас должен быть слушатель DOMready.Полагаю, код, который вы упомянули Event.observe(document, 'dom:loaded', function() { ... }, тот самый.

...