【发布时间】:2011-03-24 18:33:07
【问题描述】:
为了完成这项工作,我煞费苦心……尤其是对于 html5 检测脚本。我想要一个只设置一次并且不能再次覆盖的变量。就是这样:
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 不再为空。所以我实际上使用下划线来“隐藏”静态变量。
这对我帮助很大。我希望这是一个好方法 - 如果不是,请告诉我:)
【问题讨论】:
-
在什么情况下该变量会被覆盖?我想检测脚本无论如何只运行一次?
-
好吧,没有检查你可以很容易地做 StaticConfiguration.setVariable("html5", "bla"); StaticConfiguration.setVariable("html5", "boom"); StaticConfiguration.setVariable("html5", "bang"); ...并且变量将始终被设置 - 这就是我想要避免的。
标签: javascript oop variables setter getter