Показать сообщение отдельно
  #1 (permalink)  
Старый 02.04.2013, 17:50
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Параметры для конструктора в массиве
Нужно вызвать конструктор, причем кол-во параметров заранее не известно, оно находится в массиве. Т.е. нужно сделать что-то типа:
// 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 отсутствует. Кто-нибудь может что-нибудь подсказать?
Ответить с цитированием