我想弄清楚如何让我的应用程序中的页面变量不被全局定义。我想出了一些方法,但是想知道是否有人们使用的通用标准方法。JavaScript封装/ JQuery
我有我的插件设计模式使用这种方法:http://www.virgentech.com/blog/2009/10/building-object-oriented-jquery-plugin.html。但我不知道如何处理我的页面级封装。
我想弄清楚如何让我的应用程序中的页面变量不被全局定义。我想出了一些方法,但是想知道是否有人们使用的通用标准方法。JavaScript封装/ JQuery
我有我的插件设计模式使用这种方法:http://www.virgentech.com/blog/2009/10/building-object-oriented-jquery-plugin.html。但我不知道如何处理我的页面级封装。
通常情况下,可以实现这样的:
(function(){
var myLocal = "I'm local!";
window.myGlobal = "I'm global!";
})();
文森得到了最多的防水方法(包装在一个函数的所有内容)。
人们做的其他事情是定义一个全局对象,它或多或少地作为你的包的命名空间。
window.ChrisPkg = {
global1: ['a','b','c'],
global2: 42
globalfunc: function() { alert('hello world!'); }
}
ChrisPkg.extraGlobal = 'foo';
当我知道jQuery在身边的时候,我通常会污染'$'命名空间而不是'window'。 '$ .myCompany'成为钩点,其他所有内容都被封装在功能框中。 – gnarf 2010-05-01 19:08:49
+1这实际上是jQuery本身用于相同目的的方法。 jquery.js的全部内容如下所示:'(function(window,undefined){...})(window);'尽管我不明白需要将'window'传递给函数。即使'window'没有通过,我认为它仍然可以在容器功能中使用。 – 2010-09-10 19:44:39