2012-02-13 72 views
1

目前我的所有JavaScript函数都在一个函数中,所以我不污染全局命名空间。jQuery Limit Global命名空间

例如

var App = function() { 

    function a() { 
    } 

    return {}; 
}(); 

现在我想使用jQuery所以我想此包裹在下面:

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

我曾尝试包裹VAR应用=函数(){}在jQuery函数,但是这会导致问题,当我有应用程序上的AJAX设置属性。有任何想法吗?

回答

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 {},而在第二个示例中,我使该功能非自我调用。该部分结构看起来像复制粘贴的cruft,是不必要的。

0

如何:

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

     function a() { 
     } 

     return {}; 

}(window, document, jQuery);