New Constructor.apply(null, args) - возможно?

Рейтинг: 2Ответов: 1Опубликовано: 11.09.2014
var test = new Test.apply(null, args);

Возможно ли это воссоздать в коде?

Ответы

▲ 2Принят

:]

var test = new (Test.bind.apply(Test, [null].concat(args)))

Это всё последствия bind + apply, при помощи которых мы каррируем конструктор и получаем новый, т.к. bind внутри себя наследует prototype оригинала, то на вы выходе, мы получили наследника от Test с уже постановленными параметрами. При последующем вызове new и передаче дополнительных параметров, они буду добавлены в конец, как и полагается при использовании bind, вот пример каррирования попроще:

var log = console.log.bind(console, "Logger:");
log(1, 2, 3); // Logger: 1 2 3

UPD

var test = Object.create(Test.prototype);
Test.apply(test, args);

ES6

var test = new Test(...args);