Создание динамического объекта в javascript?

Когда я хочу вызвать функцию в javascript с аргументами, полученными из другого места, я могу использовать метод apply функции, например:

array = ["arg1", 5, "arg3"] 
...
someFunc.apply(null, array);

но что, если мне нужно вызвать конструктор аналогичным образом? Кажется, это не работает:

array = ["arg1", 5, "arg3"] 
...
someConstructor.apply({}, array);

по крайней мере, не так, как я пытаюсь:

template = ['string1', string2, 'etc'];
var resultTpl = Ext.XTemplate.apply({}, template);

это не работает:

Ext.XTemplate.prototype.constructor.apply({}, template);

Есть ли способ заставить это работать? (В этом конкретном случае я обнаружил, что новый Ext.XTemplate (шаблон) будет работать, но меня интересует общий случай)

аналогичный вопрос, но только для встроенных типов и без ответа. можешь использовать: Создание экземпляра объекта JavaScript путем вызова prototype.constructor.apply

Спасибо.

Редактировать:

Прошло время, и ES6 и транспилеры теперь в ходу. В ES6 легко сделать то, что я хотел: новый someConstructor (... array) . Babel превратит это в ES5 new (Function.prototype.bind.apply (someConstructor, [null] .concat (array))) (); , что объясняется в Как создать объект JavaScript (используя «применить»)? .

18
задан Community 23 May 2017 в 12:16
поделиться