我正在撕掉我的头发以完成此操作...特别是对于html5检测脚本。我想要一个只能设置一次而又不能被覆盖的变量。这是它:Javascript中的静态变量只能设置一次
var StaticConfiguration = {};
StaticConfiguration.Main = {
_html5: null
}
StaticConfiguration.getVariable = function(name) {
return StaticConfiguration.Main["_" + name];
}
StaticConfiguration.setVariable = function(name, value) {
if(StaticConfiguration.Main["_" + name] == null) {
StaticConfiguration.Main["_" + name] = value;
}
}
首先,我定义包含所有这些变量的一个全局对象StaticConfiguration - 于我而言,只是“HTML5”。我将它设置为null,因为我想将它设置在应用程序中。为此,我打电话
StaticConfiguration.setVariable("html5", "true");
它被设置。如果我尝试再次设置它,它会失败 - 当然,因为_html5不再为空。所以我实际上使用下划线来“隐藏”静态变量。
这对我很有帮助。我希望这是一个好方法 - 请告诉我,如果不是:)
在什么情况下会是变量会被覆盖?我想检测脚本无论如何只运行一次? – 2011-03-24 18:39:32
好吧,没有检查,你可以很容易地做 StaticConfiguration.setVariable(“html5”,“bla”); StaticConfiguration.setVariable(“html5”,“boom”); StaticConfiguration.setVariable(“html5”,“bang”); ...和变量总是会被设置 - 这就是我想要避免的。 – 2011-03-26 11:37:51