在我的rails(3.0.x,还有原型)附带的rails.js中,我看到以下结构:
(function() {
// ...
document.on("click", ...
})();
在匿名函数中包装整个代码究竟完成了什么?这是延迟代码直到dom加载还是仅文档对象的有效方法?
在我的项目中,我目前在Event.observe(document, 'dom:loaded', function() { ... }
块中有很多设置代码。我想知道,如果我在重构代码时采用上面的模式。
答案 0 :(得分:2)
你偶然发现了module pattern。它很有用,因为立即调用的函数中的变量是本地的,不会污染全局命名空间。
(function(){
var something = 17;
//can use something inside here
}());
//but not here anymore
不是因为立即调用函数(在最后的()
位中)没有时间差异
答案 1 :(得分:1)
自调用匿名函数会立即触发内部内容,这与延迟代码无关。
要在DOM准备就绪后执行内部代码块,您必须拥有DOMready侦听器。我想你提到的代码Event.observe(document, 'dom:loaded', function() { ... }
就是那个。