newify
Version:
Call function constructors with an array of arguments that spread
28 lines (19 loc) • 512 B
JavaScript
module.exports = function(){
'use strict';
var fns = {}
return function(len){
if ( ! fns [len ] ) {
var args = []
var i = 0
for (; i < len; i++ ) {
args.push( 'a[' + i + ']')
}
fns[len] = new Function(
'c',
'a',
'return new c(' + args.join(',') + ')'
)
}
return fns[len]
}
}()