bind is more powerful than I knew. It changes not just 'this' but also optionally prepends args.
new Array(1,2,3) can also be expressed as new (Function.prototype.bind.call(Array,null,1,2,3))(), and hence also new (Function.prototype.bind.apply(Array,[null].concat([1,2,3]))) or even just new (Function.prototype.bind.apply(Array,[null,1,2,3]));.