Нужно вызвать конструктор, причем кол-во параметров заранее не известно, оно находится в массиве. Т.е. нужно сделать что-то типа:
// arr - массив с параметрами.
var x;
switch( arr.length ) {
case 0: x = new MyConstructor(); break;
case 1: x = new MyConstructor( arr[0] ); break;
case 2: x = new MyConstructor( arr[0], arr[1] ); break;
case 3: x = new MyConstructor( arr[0], arr[1], arr[2] ); break;
}
apply в этом случае не помогает, нужно вызвать именно через new
Можно было бы сделать так:
var x = Object.create( MyConstructor.prototype );
MyConstructor.apply( x, arr );
но хочется сохранить совместимость с версией языка, где Object.create отсутствует. Кто-нибудь может что-нибудь подсказать?