jQuery限制全局命名空间

时间:2012-02-13 05:53:24

标签: jquery javascript-namespaces

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

e.g。

var App = function() {

    function a() {
    }

    return {};
}();

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

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

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

2 个答案:

答案 0 :(得分: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 {},而在第二个示例中,我将该函数设置为非自调用。结构的那部分看起来像复制和粘贴,并且是不必要的。

答案 1 :(得分:0)

这个怎么样:

var App = function(window, document, $) {

      function a() {
      }

      return {};

}(window, document, jQuery);