Na verdade, não há uma maneira fácil de instanciar um objeto com uma função de construtor e uma matriz de argumentos para o construtor.
Este é um pequeno snippet que define uma build
função que permite que você faça isso:
cache = {}
build = (ctor, args) ->
f = if cache[args.length]?
cache[args.length]
else
argumentsSignature = ("arg#{n}" for n in [0..args.length-1]).join(',')
cache[args.length] = new Function "ctor,#{argumentsSignature}", "return new ctor(#{argumentsSignature});"
f.apply null, [ctor].concat(args)
Agora, dada uma classe Foo, como:
class Foo
constructor: (a,b) ->
console.log(a,b)
Você pode fazer:
build Foo, [10,20]