É difícil explicar o caso por palavras, deixe-me dar um exemplo:
var myObj = {
'name': 'Umut',
'age' : 34
};
var prop = 'name';
var value = 'Onur';
myObj[name] = value; // This does not work
eval('myObj.' + name) = value; //Bad coding ;)
Como posso definir uma propriedade de variável com valor de variável em um objeto JavaScript?
javascript
object
properties
set
Umut KIRGÖZ
fonte
fonte
myObj[prop] = value;
.eval('myObj.'+name)
também não funciona porque a variávelname
não existe.var
teclados para declarar variáveis, usar mais pontos-e-vírgulas, não usareval
e aceitar mais respostas. Feito.myObj[name]
" quando tenho certeza de que pretendia escrever "myObj[prop]
".Respostas:
Isso deve funcionar. Você confundiu o nome da variável e seu valor. Mas indexar um objeto com strings para obter suas propriedades funciona bem em JavaScript.
fonte
ou
Ambos são intercambiáveis.
Edit: eu estou supondo que você quis dizer
myObj[prop] = value
, em vez de myObj [nome] = valor. A segunda sintaxe funciona bem: http://jsfiddle.net/waitinforatrain/dNjvb/1/fonte
name
onde deveriaprop
Você pode obter a propriedade da mesma forma que a definiu.
Você define o valor
foo["bar"] = "baz";
Para obter o valor
foo["bar"]
retornará "baz".
fonte
Você também pode criar algo que seja semelhante a um objeto de valor (vo);
SomeModelClassNameVO.js;
Do que você pode apenas fazer;
fonte
Ao criar um objeto
myObj
como você o criou , pense nele mais como um dicionário. Nesse caso, ele possui duas teclasname
, eage
.Você pode acessar esses dicionários de duas maneiras:
myObj[name]
); oumyObj.name
); observe que algumas propriedades são reservadas, portanto, o primeiro método é o preferido.Você deve ser capaz de acessá-lo como uma propriedade sem problemas. No entanto, para acessá-lo como um array, você precisará tratar a chave como uma string.
Caso contrário, o javascript assumirá que
name
é uma variável e, como você não criou uma variável chamadaname
, ele não poderá acessar a chave que você espera.fonte
myObj[name]
emyObj.name
embora, porque o primeiro se refere a um nome de variável e o segundo a uma chave literal.simples assim
myObj.name = value;
fonte