construcción de objetos dinámicos en javascript?
Cuando quiero llamar a una función en JavaScript con argumentos proporcionados desde otro lugar, puedo usar elapply
método de la función como:
array = ["arg1", 5, "arg3"]
...
someFunc.apply(null, array);
pero ¿y si necesito llamar a un constructor de manera similar? Parece que esto no funciona:
array = ["arg1", 5, "arg3"]
...
someConstructor.apply({}, array);
al menos no como estoy intentando:
template = ['string1', string2, 'etc'];
var resultTpl = Ext.XTemplate.apply({}, template);
esto no funciona wither:
Ext.XTemplate.prototype.constructor.apply({}, template);
¿Alguna forma de hacer que funcione? (En este caso particular encontré quenew Ext.XTemplate(template)
funcionará, pero estoy interesado en el caso general)
pregunta similar pero específica para los tipos incorporados y sin respuesta puedo usar:Crear instancias de un objeto JavaScript llamando a prototype.constructor.apply
Gracias.
Editar:El tiempo ha pasado y ES6 y los transpiladores ahora son una cosa. En ES6 es trivial hacer lo que quería:new someConstructor(...array)
. Babel convertirá eso en ES5new (Function.prototype.bind.apply(someConstructor, [null].concat(array)))();
que se explica en¿Cómo construir un objeto JavaScript (usando 'apply')?.