比方說,我有這個全局對象:訪問JavaScript對象用繩子
funky_baby = {
"wonk wonk": "clunk",
"zipee": "chugga chugga",
"ahoooga": "boioioioing"
};
而且我想用字符串「funky_baby」來訪問它。我目前使用這種方法:
window["funky_baby"];
這似乎並不像它會對我非常多瀏覽器友好。有沒有更好的方法來完成這項任務?
比方說,我有這個全局對象:訪問JavaScript對象用繩子
funky_baby = {
"wonk wonk": "clunk",
"zipee": "chugga chugga",
"ahoooga": "boioioioing"
};
而且我想用字符串「funky_baby」來訪問它。我目前使用這種方法:
window["funky_baby"];
這似乎並不像它會對我非常多瀏覽器友好。有沒有更好的方法來完成這項任務?
正如this question接受的答案中所解釋的那樣,只要您不想在IE8或更早版本中遍歷其成員,您的代碼就非常好。你可以,但是,聲明爲
window.funky_baby = {"wonk wonk", "zipee", "ahoooga"};
而且你已經解決了,太多:)
太好了,謝謝!我認爲IE8可能存在問題,這就是我問到的原因。我認爲它仍佔我們客戶羣的15%以上! –
這是完美的「多瀏覽器」友好。
obj["string"];
var string = "string";
obj[string];
obj.string;
全部完全有效。 即使您訪問的是window
,只要您可以保證該程序僅適用於網絡瀏覽器,因爲window
保證在此情況下成爲全球DOM的一部分。
除了你沒有一個真實的物體,那裏。
var obj = {
key1 : value1,
key2 : value2
};
如果你沒有在那裏的值,它會中斷。
哎呀,我會編輯!謝謝你,先生。 –
如果您正試圖通過它的名字來訪問一個變量作爲一個字符串(姑且不論對象是不是一個真正的對象),window["varName"]
是做到這一點的最佳方式。
這僅僅是特別有用的,如果你要訪問的變量本身(例如訪問window["blue"]
在一種情況下,但window["yellow"]
在另一個變化:
var blue = "Blue",
yellow = "Yellow";
function (color) {
console.log(window[color]);
}
如果你只是試圖訪問該變量,只是輸入變量名:?。
console.log(funky_baby);
庫爾人,這是我需要的 –
也許'window.funky_baby' –
基於什麼是語言*定義*用於訪問性能 – Dennis
請搜索第一有*很多重複*即。 http://stackoverflow.com/questions/4968406/javascript-property-access-dot-notation-vs-brackets, – user2246674