繁体   English   中英

IIFE jQuery准备就绪

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM