Ada*_*dam 3 javascript variables global
我应该如何创建一个变量变量作为全局变量?
像这样的东西:
function globVar(variable){
window.variable;
}
Run Code Online (Sandbox Code Playgroud)
所以通过这种方式我也可以在自动模式下创建全局变量,而且我也可以为自己创建它们更容易:)
编辑
例如,我可以像这样创建一个全局变量:globVar('myVariable');然后myVariable将其添加到全局变量中.
Joh*_*ohn 10
很抱歉这样说,但你收到的答案都是你应该远离的坏习惯.一个更好的编程实践,也许是正确的编程实践,将伪命名空间全局变量,以免混淆全局命名空间/范围.这背后的原因是为了使您的代码更易于管理,更重要的是,如果/当您的应用程序变大时,让您的生活更轻松.定义命名空间的一种简单机制是使用由Douglas Crockford着名的模块模式.
这是一个简单的例子:
var myNamespace = function(){
var o = {};
var globals = {};
var setGlobVar = function(name, value) {
globals[name] = value;
};
var getGlobVar = function(name) {
if (globals.hasOwnProperty(name)) {
return globals[name];
} else {
// return null by default if the property does not exist
return null;
}
};
o.setGlobVar = setGlobVar;
o.getGlobVar = getGlobVar;
return o;
}();
Run Code Online (Sandbox Code Playgroud)
要使用它,您只需将其称为对象的方法.
myNamespace.setGlobVar("secret_msg", "Dumbledore dies, so does Hedwig");
myNamespace.getGlobVar("secret_msg");
Run Code Online (Sandbox Code Playgroud)
如果要简化访问变量的方式,也可以公开globals变量而不是使用setGlobVar和getGlobVar方法来使用变量.
关键是window通过创建自己的命名空间,尽可能远离定义全局命名空间(即对象)中的变量.这样可以减少名称冲突,意外重写或覆盖的可能性,以及全局命名空间的混乱.
更简单的方法是简单地定义一个对象并扩充其属性.
var globals = {};
globals.SECRET_MSG = "Snape is not a traitor"
Run Code Online (Sandbox Code Playgroud)
虽然我会通过包装globals到特定于我的应用程序的命名空间来扩展这种方法.
var myNamespace = {};
myNamespace.globals = {};
myNamespace.globals.SECRET_MSG = "Snape is not a traitor"
Run Code Online (Sandbox Code Playgroud)
注意:这实际上与我建议的原始模块模式方法相同,只是没有get和set访问器方法和编码不同.
| 归档时间: |
|
| 查看次数: |
4664 次 |
| 最近记录: |