#javascript #jquery
#язык JavaScript #jquery
Вопрос:
Как вы можете создать объект с динамически создаваемым ИМЕНЕМ? НЕ динамически создаваемые ключи или значения. Я хотел бы изучить это как в jQuery, так и в javascript
var com = "thing_" var bined = "one" var [com bined] = {} //so I can populate as such: thing_one.key = value
Я погуглил свои глаза и перепробовал тысячу вещей. Заранее спасибо и приношу извинения, если я упустил из виду очевидное.
ОБНОВЛЕНИЕ: Я принял ответ BadPiggie, так как он работает в соответствии с запросом, однако я согласен с комментариями Теему и Терри: в этом нет необходимости и на самом деле нет варианта использования.
Было весело исследовать, спасибо за весь ваш вклад!
Комментарии:
1. В JS нет концепции имен динамических переменных.
2. Это также похоже на проблему XY. На самом деле динамически генерируемое имя глобальной переменной не используется.
3. Теему и Терри, я действительно ценю ваш вклад. Я также рассматриваю различные способы достижения желаемого результата. Тем не менее, я все еще хотел изучить это как возможность.
Ответ №1:
В javascript (в браузере) global variables
являются свойством window
объекта. Так что ты можешь поступить вот так.
var com = "thing_" var bined = "one" window[com bined] = {} //you can populate as such: thing_one.key = "some value"; console.log(thing_one);
Или вы можете использовать eval()
, но не рекомендуется
var com = "thing_" var bined = "one" eval(`var ${com bined} = {}`); //you can populate as such: thing_one.key = "some value"; console.log(thing_one);
Комментарии:
1. Бэдпигги, спасибо тебе за это! Я использовал неправильные цитаты. когда я тестировал eval 🙁 Ваша версия работает. Мне настоятельно не советовали использовать window[], поэтому я искал альтернативы.
Ответ №2:
Вам нужно сослаться на другой объект, чтобы вставить свой объект. Если бы вы сделали это в классе, вы могли бы сделать это[объединено]={}. За пределами класса вы могли бы сделать window[com bin]={}.