JavaScript:全球范围

时间:2010-07-16 14:22:22

标签: javascript scope global

现在,我创建了一个包含许多函数的.js文件,然后将其链接到我的html页面。这是有效的,但我想知道在我的页面中插入js以避免与范围冲突的最佳方式(良好实践)是什么... 谢谢。

4 个答案:

答案 0 :(得分:13)

您可以将它们包装在匿名函数中,如:

(function(){ /* */ })();

但是,如果您需要重新使用您在别处(在其他脚本中)编写的所有javascript函数,那么最好创建一个可以访问它们的单个全局对象。要么:

var mySingleGlobalObject={};
mySingleGlobalObject.someVariable='a string value';
mySingleGlobalObject.someMethod=function(par1, par2){ /* */ };

或替代的,更短的语法(做同样的事情):

var mySingleGlobalObject={
  someVariable:'a string value',
  someMethod:function(par1, par2){ /* */ }
};

稍后可以从以下其他脚本访问它:

mySingleGlobalObject.someMethod('jack', 'jill');

答案 1 :(得分:10)

一个简单的想法是使用一个代表你的命名空间的对象:

var NameSpace = {
    Person : function(name, age) {

    }
};

var jim= new NameSpace.Person("Jim", 30);

答案 2 :(得分:6)

最好的方法是创建一个新范围并在那里执行代码。

(function(){
  //code here
})();

最好在至少访问全局范围时使用。

基本上,这定义了一个匿名函数,给它一个新的范围,并调用它。

答案 3 :(得分:1)

这可能不是最好的方法,但是很多PHP系统(我在看你,Drupal)都会使用他们特定插件的名称并将其添加到所有功能名称之前。您可以执行类似的操作,将您的功能名称添加到您的函数名称 - “mything_do_action()”

或者,您可以采用更“OO”的方法,并创建一个封装您的功能的对象,并将所有功能添加为IT上的成员函数。这样,全球范围内只有一件事需要担心。