我正在撕掉我的頭髮以完成此操作...特別是對於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