Как передать неопределенное количество аргументов в функцию-конструктор при создании экземпляра?

Рейтинг: 0Ответов: 1Опубликовано: 06.12.2014

Как более изящно сделать -

function Test( a, b ){
    this.a = a;
    this.b = b;
}

var test = new Test.call( ..., 1, 2 );

Обновлено:

function create( ){
    var type = arguments[0],
        length = arguments.length,
        args = [],
        instence = Object.create( type.prototype );

    while( length-- > 1 ){
        args[length - 1] = arguments[length];
    }

    return type.apply( instence, args );
}

create( Test, 2, 3 )

Ответы

▲ 1Принят

Можно попробовать использовать apply вместо call, в apply передается массив аргументов вместо именованного списка. Либо, как вариант, передать объект:

var user = new userConstructor({
      age: 5,
      name: 'Vasya'
    });