Трудно объяснить случай словами, позвольте мне привести пример:
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?
myObj.name=value
или
myObj['name']=value (Quotes are required)
Оба они взаимозаменяемы.
Edit: Я предполагаю, что вы имели в виду myObj[prop] = value, а не myObj [name] = value , Второй синтаксис отлично работает: http://jsfiddle.net/waitinforatrain/dNjvb/1/
Ваш вопрос ошибочен - это действительно работает, но вы допустили ошибку. Вы писали «myObj[name]», когда я совершенно уверен, что вы хотели написать «myObj[prop]».
Когда вы создаете объект myObj, как у вас, подумайте, что он больше похож на словарь. В этом случае он имеет два ключа: name и age.
Вы можете получить доступ к этим словарям двумя способами:
Подобно массиву (например, myObj[name]), ; или как свойство (например, myObj.name); обратите внимание, что некоторые свойства зарезервированы, поэтому первый метод является предпочтительным.Вы можете иметь доступ к нему как к собственности без каких-либо проблем. Однако, чтобы получить доступ к нему как к массиву, вам нужно обработать ключ как строку.
myObj["name"]
В противном случае javascript будет считать, что name является переменной, и поскольку у вас нет создал переменную с именем name, она не сможет получить доступ к ключу, который вы ожидаете.
Вы также можете создать что-то, что было бы похоже на объект value (vo);
SomeModelClassNameVO.js;
function SomeModelClassNameVO(name,id) {
this.name = name;
this.id = id;
}
Чем вы можете это сделать,
var someModelClassNameVO = new someModelClassNameVO('name',1);
console.log(someModelClassNameVO.name);
Вы можете получить свойство так же, как вы его установили.
foo = {
bar: "value"
}
Вы устанавливаете значение foo["bar"] = "baz";
Чтобы получить значение foo["bar"]
вернет «baz».