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
没有通过,我认为它仍然可以从容器函数中使用。