0

假设我有这个全局对象:

funky_baby = {
    "wonk wonk": "clunk", 
    "zipee": "chugga chugga", 
    "ahoooga": "boioioioing"
};

我想使用字符串“funky_baby”来访问它。我目前正在使用这种方法:

window["funky_baby"];

这似乎对我来说不是非常友好的多浏览器。有没有更好的方法来完成这项任务?

4

3 回答 3

4

正如这个问题的已接受答案中所解释的,只要您不想在 IE8 或更早版本中遍历其成员,您的代码就非常好。但是,您可以将其声明为

window.funky_baby = {"wonk wonk", "zipee", "ahoooga"};

你也解决了这个问题:)

于 2013-05-29T00:07:01.240 回答
3

那是完全“多浏览器”友好的。

obj["string"];

var string = "string";
obj[string];
obj.string;

都是完全有效的。即使您正在访问window,只要您可以保证该程序适用于网络浏览器,因为window在这种情况下保证是全局 DOM 的一部分。

除了你没有一个真实的对象,那里。

var obj = {
    key1 : value1,
    key2 : value2
};

如果你没有那里的价值观,它就会破裂。

于 2013-05-29T00:03:47.323 回答
2

如果您试图通过其名称 a 作为字符串访问变量(撇开该对象不是真实对象),window["varName"]这是最好的方法。

这仅在您尝试访问的变量本身不同时才特别有用(例如window["blue"]在一种情况下访问但window["yellow"]在另一种情况下访问:

var blue   = "Blue",
    yellow = "Yellow";

function (color) {
    console.log(window[color]);
}

如果您只是尝试访问该变量,只需键入变量名:

console.log(funky_baby);
于 2013-05-29T00:08:35.403 回答