Использование .apply () с оператором 'new'. Это возможно?

В JavaScript я хочу создать экземпляр объекта (черезnew оператор), но передать конструктору произвольное количество аргументов. Это возможно?

Я хочу сделать что-то вроде этого (но приведенный ниже код не работает):

function Something(){
    // init stuff
}
function createSomething(){
    return new Something.apply(null, arguments);
}
var s = createSomething(a,b,c); // 's' is an instance of Something

Ответ

Из ответов здесь стало ясно, чтоНет встроенного способа вызова.apply() сnew оператор. Тем не менее, люди предложили ряд действительно интересных решений проблемы.

Мое предпочтительное решение былоэтот от Мэтью Крамли (Я'мы изменили его, чтобы передатьarguments имущество):

var createSomething = (function() {
    function F(args) {
        return Something.apply(this, args);
    }
    F.prototype = Something.prototype;

    return function() {
        return new F(arguments);
    }
})();

Ответы на вопрос(30)

Ваш ответ на вопрос