tho*_*mas 9 javascript scope global
现在,我创建了一个包含许多函数的.js文件,然后将其链接到我的html页面.这是有效的,但我想知道在我的页面中插入js并避免与范围冲突的最佳方法(良好做法)...谢谢.
luc*_*eer 13
您可以将它们包装在匿名函数中,如:
(function(){ /* */ })();Run Code Online (Sandbox Code Playgroud)
但是,如果您需要重新使用您在其他地方(在其他脚本中)编写的所有javascript函数,那么最好创建一个可以访问它们的单个全局对象.要么:
var mySingleGlobalObject={};
mySingleGlobalObject.someVariable='a string value';
mySingleGlobalObject.someMethod=function(par1, par2){ /* */ };
Run Code Online (Sandbox Code Playgroud)
或替代,更短的语法(做同样的事情):
var mySingleGlobalObject={
someVariable:'a string value',
someMethod:function(par1, par2){ /* */ }
};Run Code Online (Sandbox Code Playgroud)
然后可以从以下其他脚本访问它:
mySingleGlobalObject.someMethod('jack', 'jill');Run Code Online (Sandbox Code Playgroud)
Cha*_*ion 10
一个简单的想法是使用一个代表您的命名空间的对象:
var NameSpace = {
Person : function(name, age) {
}
};
var jim= new NameSpace.Person("Jim", 30);
Run Code Online (Sandbox Code Playgroud)
最好的方法是创建一个新的范围并在那里执行代码.
(function(){
//code here
})();
Run Code Online (Sandbox Code Playgroud)
最好在访问全局范围时使用此方法.
基本上,这定义了一个匿名函数,给它一个新的范围,并调用它.
这也许不是最好的方法,但是很多 PHP 系统(我正在看你,Drupal)都会采用他们特定插件的名称并将其添加到所有函数名称之前。您可以做类似的事情,将您的功能名称添加到函数名称中 - “mything_do_action()”
或者,您可以采用更“OO”的方法,创建一个封装您的功能的对象,并将所有功能添加为 IT 上的成员功能。这样,全球范围内就只需要担心一件事。