Здравствуйте!
Подскажите, пожалуйста, почему не удается добавить объект в объект если исходный пустой?
Например:
obj = {};
obj['options']['test2'] = 2; // ошибка Cannot set property 'test2' of undefined
Однако, если перед этим создать объект с помощью присвоения:
obj = {};
obj['options'] = {test1:1};
obj['options']['test2'] = 2; //ошибки уже не возникает
Подскажите, пожалуйста, оптимальные способы создания объекта в объекте. Спасибо!
Ошибка возникает потому что данного объекта нету, следовательно подобное выражение вернёт undefined без предыдущего присваивания данного параметра.
return typeof options ["name"];
Для корректной работы нужно сначала создать объект, а уже только потом работать с его параметрами.
options ["name"] ["parameter"] = typeof value; // так работать не будет
options ["name"] = {}; // а так все будет работать
options ["name"] ["parameter"] = typeof value;
obj['options']['test2'] = 2; // ошибка Cannot set property 'test2' of undefined
Текст ошибки прямо описывает проблему: obj.options на момент присваивания не определён.
Одним из решений может быть предварительная проверка:
if (typeof obj.options === 'undefined') obj.options = {};
obj.options.test2 = 2;
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости