Как добавить литерал объекта в литерал объекта

Предполагая, что у меня есть литерал объекта, который выглядит так:

C = {"A":"a","B":"b","C":"c"};

и я хочу добавить еще один такой объект ..

"D" : {"E":e}

где e - переменная. и e = "ValueOfE" Так что C будет иметь такое значение ..

C = {"A":"a","B":"b","C":"c", "D" : { "E" : "ValueOfE"}};

Как мне это сделать?


person srh snl    schedule 10.03.2014    source источник
comment
Похоже, вы это уже сделали ...   -  person m59    schedule 10.03.2014
comment
да, @ m59 прав. Более того, если вы хотите добавить его после объявления объекта. Вы можете сделать так: c["D"] = { "E" : "ValueOfE"}.   -  person Mohit Pandey    schedule 10.03.2014
comment
@ m59 - нет, не видел. Я бы не стал спрашивать, знаю ли я ответ :)   -  person srh snl    schedule 10.03.2014


Ответы (3)


Значения в объектных литералах могут быть произвольными выражениями, что означает, что они могут содержать другие объектные литералы, использовать существующие переменные и так далее; поэтому, если вы спрашиваете, что я о вас думаю, вы можете написать:

C = { "A": "a", "B": "b", "C": "c", "D": { "E": e } };
person ruakh    schedule 10.03.2014

Используйте следующий синтаксис:

C = {"A":"a","B":"b","C":"c"};
C.D = {"E":e};
person Minko Gechev    schedule 10.03.2014

Допустим, у вас есть литерал объекта C, например:

C = {"A":"a","B":"b","C":"c"};

вы можете добавить к нему любые другие объекты, например:

var D = { "E" : e};
C["D"] = D;

или просто:

C["D"] = { "E" : e};

и если ваш ключ ("D") является допустимым идентификатором, который в данном случае таков, вы также можете сделать это следующим образом:

C.D = { "E" : e};

Кроме того, в некоторых старых браузерах нельзя было использовать зарезервированные слова без кавычек. Например, ES3 не разрешал использование зарезервированных слов без кавычек в качестве имен свойств, таких как: default, delete, do, double, else, enum, ... которые здесь не используются.

Вы также можете создать свой объект с помощью литерала и передать объект D:

C = {"A":"a","B":"b","C":"c", "D":D };

а также:

C = {"A":"a","B":"b","C":"c", "D": { "E" : e } };

Дело в том, что объекты JavaScript представляют собой своего рода HashMap с ключами и значениями, и, используя буквальный синтаксис, вы можете создать его со всеми другими объектами и значениями в нем. а также вы можете добавить новые пары ключ-значение после создания объекта.

person Mehran Hatami    schedule 10.03.2014
comment
и если ваш ключ (D) не является зарезервированным ключевым словом ... Имя свойства просто должно быть действительным именем идентификатора. Так, например, C.if = 'foo'; вполне допустим, но это может привести к проблемам в старых браузерах. Итак, технически вы можете использовать точечную нотацию также, если имя свойства является зарезервированным ключевым словом, но лучше, если вы этого не сделаете. - person Felix Kling; 10.03.2014
comment
@FelixKling: спасибо за отзыв, я его изменил. - person Mehran Hatami; 10.03.2014