现在,我创建了一个包含许多函数的.js文件,然后将其链接到我的html页面。这是有效的,但我想知道在我的页面中插入js以避免与范围冲突的最佳方式(良好实践)是什么... 谢谢。
答案 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上的成员函数。这样,全球范围内只有一件事需要担心。