динамическая конструкция объекта в 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);
Есть ли способ заставить это работать? (В данном конкретном случае я обнаружил, чтоnew Ext.XTemplate(template)
будет работать, но меня интересует общее дело)
похожий вопрос, но специфичный для встроенных типов и без ответа я могу использовать:Создание объекта JavaScript путем вызова prototype.constructor.apply
Спасибо.
Редактировать:Время прошло, а ES6 и транспортёры теперь вещь. В ES6 тривиально сделать то, что я хотел:new someConstructor(...array)
. галдеж превратит это в ES5new (Function.prototype.bind.apply(someConstructor, [null].concat(array)))();
что объясняется вКак построить объект JavaScript (используя «применить»)?.