1

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

例如

var App = function() {

    function a() {
    }

    return {};
}();

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

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

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

4

2 回答 2

1

您可以直接将 、 和 传递给应用程序,而不是使用单独的window匿名document函数jQuery

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

于 2012-02-13T06:05:26.980 回答
0

这个怎么样:

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

      function a() {
      }

      return {};

}(window, document, jQuery);
于 2012-02-13T06:04:00.510 回答