JavaScript封装/JQuery

JavaScript封装/JQuery,javascript,oop,namespaces,encapsulation,Javascript,Oop,Namespaces,Encapsulation,我正试图找出如何防止应用程序中的页面变量被全局定义。我提出了一些方法,但我想知道人们是否有一个通用的标准方法 我已经用这种方法确定了我的插件设计模式:。但是我不知道如何处理我的页面级封装。通常,它是这样实现的: (function(){ var myLocal = "I'm local!"; window.myGlobal = "I'm global!"; })(); 通常,它是这样实现的: (function(){ var myLocal = "I'm loc

我正试图找出如何防止应用程序中的页面变量被全局定义。我提出了一些方法,但我想知道人们是否有一个通用的标准方法


我已经用这种方法确定了我的插件设计模式:。但是我不知道如何处理我的页面级封装。

通常,它是这样实现的:

(function(){

    var myLocal = "I'm local!";

    window.myGlobal = "I'm global!";

})();

通常,它是这样实现的:

(function(){

    var myLocal = "I'm local!";

    window.myGlobal = "I'm global!";

})();

Vincent采用了最严密的方法(将所有内容封装在函数中)

人们要做的另一件事是定义一个全局对象,该对象或多或少可以用作包的名称空间

window.ChrisPkg = {
   global1: ['a','b','c'],
   global2: 42
   globalfunc: function () { alert('hello world!'); }
}

ChrisPkg.extraGlobal = 'foo';

Vincent采用了最严密的方法(将所有内容封装在函数中)

人们要做的另一件事是定义一个全局对象,该对象或多或少可以用作包的名称空间

window.ChrisPkg = {
   global1: ['a','b','c'],
   global2: 42
   globalfunc: function () { alert('hello world!'); }
}

ChrisPkg.extraGlobal = 'foo';

当我知道jQuery存在时,我通常会污染
$
名称空间,而不是
窗口
<代码>$。myCompany成为了钩子点,其他所有东西都被包装在一个函数外壳中。+1事实上,jQuery本身也使用了同样的方法。jquery.js的全部内容是这样包装的:
(函数(窗口,未定义){…})(窗口)虽然我并不真正理解将
窗口
传递到函数中的必要性。即使未通过
window
,我认为它仍然可以从容器函数中使用。当我知道jQuery存在时,我通常会污染
$
命名空间,而不是
window
<代码>$。myCompany
成为了钩子点,其他所有东西都被包装在一个函数外壳中。+1事实上,jQuery本身也使用了同样的方法。jquery.js的全部内容是这样包装的:
(函数(窗口,未定义){…})(窗口)虽然我并不真正理解将
窗口
传递到函数中的必要性。即使
window
没有通过,我认为它仍然可以从容器函数中使用。