Как я могу ссылаться на объект динамически? - PullRequest
9 голосов
/ 04 октября 2008

В Javascript у меня есть объект:

obj = { one: "foo", two: "bar" };

Теперь я хочу сделать это

var a = 'two';
if(confirm('Do you want One'))
{
  a = 'one';
}

alert(obj.a);

Но, конечно, это не работает. Какой будет правильный способ динамической ссылки на этот объект?

Ответы [ 3 ]

18 голосов
/ 04 октября 2008

краткий ответ: obj[a]

длинный ответ: obj.field - это просто сокращение для obj["field"], для особого случая, когда ключ представляет собой постоянную строку без пробелов, точек или других неприятных вещей. в вашем вопросе ключ не был константой, поэтому просто используйте полный синтаксис.

6 голосов
/ 04 октября 2008

Как это:

obj[a]
2 голосов
/ 04 октября 2008

В качестве примечания, глобальные переменные присоединены к объекту "окна", поэтому вы можете сделать

var myGlobal = 'hello';
var a = 'myGlobal';
alert(window[a] + ', ' + window.myGlobal + ', ' + myGlobal);

Это предупредит "привет, привет, привет"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...