如何将更改变量创建为全局变量?
所以,就像:
function globVar(variable){
window.variable;
}因此,通过这种方式,我也可以在自动模式下创建全局变量,也可以更容易地为自己创建它们:)
编辑
例如,我可以像这样创建一个全局变量:globVar('myVariable');,然后将myVariable添加到全局变量中。
发布于 2010-11-13 18:22:59
很抱歉这么说,但是你得到的答案是你应该远离的坏习惯。一个更好的编程实践(也许是正确的编程实践)是伪命名空间--您的全局变量,这样就不会混淆全局命名空间/范围。这样做的原因是使代码更易于管理,更重要的是,如果/当应用程序变得很大时,可以使您的生活更加轻松。定义命名空间的一个简单机制是使用道格拉斯·克罗克福德( Douglas )创建的模块模式。
下面是一个简单的例子:
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;
}();要使用它,只需将其称为对象的方法。
myNamespace.setGlobVar("secret_msg", "Dumbledore dies, so does Hedwig");
myNamespace.getGlobVar("secret_msg");如果您想简化访问变量的方式,也可以公开globals变量,而不是使用setGlobVar和getGlobVar方法。
重点是尽可能避免在全局命名空间(即window对象)中定义变量,方法是创建自己的命名空间。这减少了名称冲突、意外重写或重写以及全局命名空间混乱的可能性。
一种更简单的方法就是简单地定义一个对象并增强它的属性。
var globals = {};
globals.SECRET_MSG = "Snape is not a traitor"尽管我会通过将globals封装到特定于我的应用程序的命名空间来扩展这种方法。
var myNamespace = {};
myNamespace.globals = {};
myNamespace.globals.SECRET_MSG = "Snape is not a traitor"注意:这实际上与我建议的原始模块模式方法相同,只是没有get和set访问器方法,而且编码方式不同。
发布于 2010-11-13 17:52:37
以globVar('myVar','myVarValue')的形式调用函数
function globVar(variable,value){
window[variable] = value;
}下面是一个小摆设:http://jsfiddle.net/emQQm/
发布于 2010-11-13 17:41:52
window.variable =变量;
不明白什么是“自动模式”,所以这可能不是你想要的。
https://stackoverflow.com/questions/4173835
复制相似问题