Como faço referência a um objeto dinamicamente?
-
05-07-2019 - |
Pergunta
Em Javascript, eu tenho um objeto:
obj = { one: "foo", two: "bar" };
Agora, quero que faça isso
var a = 'two';
if(confirm('Do you want One'))
{
a = 'one';
}
alert(obj.a);
Mas é claro que ele não funciona. Qual seria a maneira correta de fazer referência a este objeto dinamicamente?
Solução
resposta curta: obj[a]
resposta longa: obj.field
é apenas uma abreviação para obj["field"]
, para o caso especial em que a chave é uma string constante, sem espaços, pontos ou outras coisas desagradáveis. na sua pergunta, a chave não foi uma constante, então basta usar a sintaxe completa.
Outras dicas
Como esta:
obj[a]
Como uma nota lateral, variáveis ??globais estão ligados ao objeto "janela", para que possa fazer
var myGlobal = 'hello';
var a = 'myGlobal';
alert(window[a] + ', ' + window.myGlobal + ', ' + myGlobal);
Este alerta vontade "Olá, Olá, Olá"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow