【发布时间】:2011-03-17 00:01:45
【问题描述】:
现在,我创建了一个包含很多功能的 .js 文件,然后将其链接到我的 html 页面。这行得通,但我想知道在我的页面中插入 js 并避免与范围冲突的最佳方式(良好做法)是什么...... 谢谢。
【问题讨论】:
标签: javascript scope global
现在,我创建了一个包含很多功能的 .js 文件,然后将其链接到我的 html 页面。这行得通,但我想知道在我的页面中插入 js 并避免与范围冲突的最佳方式(良好做法)是什么...... 谢谢。
【问题讨论】:
标签: javascript scope global
您可以将它们包装在一个匿名函数中,例如:
(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');
【讨论】:
一个简单的想法是使用一个代表您的命名空间的对象:
var NameSpace = {
Person : function(name, age) {
}
};
var jim= new NameSpace.Person("Jim", 30);
【讨论】:
最好的方法是创建一个新的作用域并在那里执行你的代码。
(function(){
//code here
})();
这最好在至少访问全局范围时使用。
基本上,这定义了一个匿名函数,给它一个新的范围,然后调用它。
【讨论】:
window.onload放在哪里?
这可能不是最好的方法,但是很多 PHP 系统(我在看你,Drupal)采用他们特定插件的名称并将其添加到所有函数名称之前。您可以做类似的事情,将您的能力名称添加到您的函数名称中 - “mything_do_action()”
或者,您可以采用更“OO”的方法,创建一个封装您的功能的对象,并将您的所有函数添加为 IT 上的成员函数。这样一来,全球范围内只需担心一件事。
【讨论】: