Динамически создавайте ИМЕНА ОБЪЕКТОВ в javascript/jquery, а не их ключи или значения

#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]={}.