[英]IIFE jquery ready
我正在开发一个包含大量JavaScript的Web项目,由于我们将所有内容都添加到了“ $。”中,因此我们开始遇到名称空间冲突。
我阅读了有关命名空间的内容,并在http://addyosmani.com/blog/essential-js-namespacing/中找到了不错的文章
我尝试按照建议在IIFE中设置名称空间,并认为我很幸运,因为该功能已经设置为
(function() { ... });
所以我将其转换为:
(function(namespace, undefined) { ... })(window.stuff = window.stuff || {});
却发现(经过数小时的工作)原来是
$(function() { ... }
这意味着所有这些都在jQuery的ready()函数中被调用。
我想保留命名空间IIFE,但无法弄清楚如何在jQuery的ready()函数中使用它。 这有可能吗?
var namespace = (function() {
// local variables and functions
function readyHandler($) {
// DOM ready code
$("selector").method();
}
// exposed methods
return {
readyHandler: readyHandler
};
})();
jQuery(namespace.readyHandler);
嗯,不确定您是否理解了这些概念……这些函数都不像立即调用函数表达式,因为您没有在调用该函数。
(function() { ... } ());
--^-- invoke function
jQuery的ready
已经创建了一个新的闭包,因此您无论如何都不需要IIFE。
无论如何,使用jQuery时,您都可以在$
名称空间中为您的插件添加名称空间,而该对象不会污染您的对象。
$.myplugin = {
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.