假设我有这个全局对象:
funky_baby = {
"wonk wonk": "clunk",
"zipee": "chugga chugga",
"ahoooga": "boioioioing"
};
我想使用字符串“funky_baby”来访问它。我目前正在使用这种方法:
window["funky_baby"];
这似乎对我来说不是非常友好的多浏览器。有没有更好的方法来完成这项任务?
假设我有这个全局对象:
funky_baby = {
"wonk wonk": "clunk",
"zipee": "chugga chugga",
"ahoooga": "boioioioing"
};
我想使用字符串“funky_baby”来访问它。我目前正在使用这种方法:
window["funky_baby"];
这似乎对我来说不是非常友好的多浏览器。有没有更好的方法来完成这项任务?
正如这个问题的已接受答案中所解释的,只要您不想在 IE8 或更早版本中遍历其成员,您的代码就非常好。但是,您可以将其声明为
window.funky_baby = {"wonk wonk", "zipee", "ahoooga"};
你也解决了这个问题:)
那是完全“多浏览器”友好的。
obj["string"];
var string = "string";
obj[string];
obj.string;
都是完全有效的。即使您正在访问window
,只要您可以保证该程序适用于网络浏览器,因为window
在这种情况下保证是全局 DOM 的一部分。
除了你没有一个真实的对象,那里。
var obj = {
key1 : value1,
key2 : value2
};
如果你没有那里的价值观,它就会破裂。
如果您试图通过其名称 a 作为字符串访问变量(撇开该对象不是真实对象),window["varName"]
这是最好的方法。
这仅在您尝试访问的变量本身不同时才特别有用(例如window["blue"]
在一种情况下访问但window["yellow"]
在另一种情况下访问:
var blue = "Blue",
yellow = "Yellow";
function (color) {
console.log(window[color]);
}
如果您只是尝试访问该变量,只需键入变量名:
console.log(funky_baby);