Как установить значения объекта Javascript динамически?
трудно объяснить дело словами, приведу пример:
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 ;)
Как я могу установить свойство переменной со значением переменной в объект JavaScript?
6 ответов:
myObj[prop] = value;
Это должно сработать. Вы перепутали имя переменной и ее значение. Но индексирование объекта со строками для получения его свойств отлично работает в JavaScript.
myObj.name=value
или
myObj['name']=value (Quotes are required)
оба они взаимозаменяемы.
Edit: Я предполагаю, что вы имели в виду
myObj[prop] = value
, вместо myObj[name] = value. Второй синтаксис работает отлично:http://jsfiddle.net/waitinforatrain/dNjvb/1/
вы можете получить свойство так же, как вы его установили.
foo = { bar: "value" }
установить значение
foo["bar"] = "baz";
чтобы получить значение
foo["bar"]
вернется "баз".
при создании объекта
myObj
как у вас есть, думайте об этом больше как словарь. В этом случае он имеет два ключа,name
иage
.вы можете получить доступ к этим словарям двумя способами:
- как массив (например,
myObj[name]
) или- как имущества (например,
myObj.name
); обратите внимание, что некоторые свойства зарезервированы, поэтому предпочтителен первый метод.вы должны иметь возможность получить доступ к нему как к свойству без каких-либо проблем. Однако, чтобы получить доступ к нему как к массиву, вам нужно будет обработать ключ как строку.
myObj["name"]
в противном случае javascript будет считать, что
name
- это переменная, и так как вы не создали переменную с именемname
, он не сможет получить доступ к ключу, который вы ожидали.