Как я могу ссылаться на объект динамически?

StackOverflow https://stackoverflow.com/questions/169731

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

alert(obj.a);

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

Это было полезно?

Решение

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

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

Другие советы

Вот так:

obj[a]

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top