Подтвердить что ты не робот

Как установить значения объектов 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?

4b9b3361

Ответ 1

myObj[prop] = value;

Это должно сработать. Вы перепутали имя переменной и ее значение. Но индексирование объекта со строками для получения его свойств отлично работает в JavaScript.

Ответ 2

myObj.name=value

или

myObj['name']=value     (Quotes are required)

Оба они взаимозаменяемы.

Изменить: Я предполагаю, что вы имели в виду myObj[prop] = value, а не myObj [name] = значение. Второй синтаксис отлично работает: http://jsfiddle.net/waitinforatrain/dNjvb/1/

Ответ 3

Вы можете получить свойство так же, как вы его установили.

foo = {
 bar: "value"
}

Вы устанавливаете значение foo["bar"] = "baz";

Чтобы получить значение foo["bar"]

вернет "baz".

Ответ 4

Когда вы создаете объект myObj, как у вас, подумайте, что он больше похож на словарь. В этом случае он имеет две клавиши: name и age.

Вы можете получить доступ к этим словарям двумя способами:

  • Как массив (например, myObj[name]); или
  • Как свойство (например, myObj.name); обратите внимание, что некоторые свойства зарезервированы, поэтому предпочтительным является первый метод.

Вы можете иметь доступ к нему как к собственности без каких-либо проблем. Однако, чтобы получить доступ к нему как к массиву, вам нужно обработать ключ как строку.

myObj["name"]

В противном случае javascript будет считать, что name является переменной, и поскольку вы не создали переменную с именем name, она не сможет получить доступ к ключу, который вы ожидаете.

Ответ 5

Вы также можете создать что-то, что было бы похоже на объект value (vo);

SomeModelClassNameVO.js;

function SomeModelClassNameVO(name,id) {
    this.name = name;
    this.id = id;
}

Чем вы можете это сделать,

   var someModelClassNameVO = new someModelClassNameVO('name',1);
   console.log(someModelClassNameVO.name);

Ответ 6

просто, как это myObj.name = value;

Ответ 7

Ваш вопрос ошибочен - это действительно работает, но вы допустили ошибку. Вы писали "myObj[name]", когда я совершенно уверен, что вы хотели написать "myObj[prop]".