【问题标题】:jQuery Limit Global NamespacejQuery 限制全局命名空间
【发布时间】:2012-03-04 14:20:19
【问题描述】:

目前我将所有 JavaScript 函数都放在一个函数中,因此不会污染全局命名空间。

例如

var App = function() {

    function a() {
    }

    return {};
}();

现在我想使用 jQuery,所以我希望它包含在以下内容中:

(function (window, document, $) {
   ...
}(window, document, jQuery));

我尝试将 var App = function () {} 包装在 jQuery 函数中,但是当我在 App 上设置 AJAX 属性时,这会导致问题。有什么想法吗?

【问题讨论】:

    标签: jquery javascript-namespaces


    【解决方案1】:

    您可以直接将windowdocumentjQuery 传递给应用程序,而不是使用单独的匿名函数:

    var App = function(window, document, $) {
        function a() {
        }
    }(window, document, jQuery);
    

    或者,你可以在全局命名空间中声明App,但是在jQuery闭包中定义它,像这样:

    var App = null;
    
    (function (window, document, $) {
        App = function() {
            function a() {
            }
        };
    }(window, document, jQuery));
    

    请注意,在这两个示例中,我都删除了return {},而在第二个示例中,我将函数设为非自调用。这部分结构看起来像复制粘贴,没有必要。

    【讨论】:

      【解决方案2】:

      这个怎么样:

      var App = function(window, document, $) {
      
            function a() {
            }
      
            return {};
      
      }(window, document, jQuery);
      

      【讨论】:

        猜你喜欢
        • 2011-03-25
        • 2011-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-03
        • 2013-11-22
        • 2012-03-13
        相关资源
        最近更新 更多