construção dinâmica de objetos em javascript?
Quando desejo chamar uma função em javascript com argumentos fornecidos de outros lugares, posso usar oapply
método da função como:
array = ["arg1", 5, "arg3"]
...
someFunc.apply(null, array);
mas e se eu precisar chamar um construtor de maneira semelhante? Isso não parece funcionar:
array = ["arg1", 5, "arg3"]
...
someConstructor.apply({}, array);
pelo menos não como eu estou tentando:
template = ['string1', string2, 'etc'];
var resultTpl = Ext.XTemplate.apply({}, template);
isso não funciona com:
Ext.XTemplate.prototype.constructor.apply({}, template);
Alguma maneira de fazer isso funcionar? (Nesse caso em particular, descobri quenew Ext.XTemplate(template)
funcionará, mas estou interessado no caso geral)
pergunta semelhante, mas específica para tipos internos e sem resposta eu posso usar:Instanciando um objeto JavaScript chamando prototype.constructor.apply
Obrigado.
Editar:O tempo passou e ES6 e transpilers agora são uma coisa. No ES6, é trivial fazer o que eu queria:new someConstructor(...array)
. Babel vai transformar isso em ES5new (Function.prototype.bind.apply(someConstructor, [null].concat(array)))();
o que é explicado emComo construir um objeto JavaScript (usando 'apply')?.