Object factory in JavaScript
Actually there's no easy way to instantiate an object with a constructor function and an array of arguments for the constructor.
This is a little snippet that defines a build
function that allow you to do that:
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)
Now, given a class Foo such as:
class Foo
constructor: (a,b) ->
console.log(a,b)
You can do:
build Foo, [10,20]
Written by Cédric Néhémie
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#