Uso de .apply () con el operador 'nuevo'. es posible?

En JavaScript, quiero crear una instancia de objeto (a través de lanew operador), pero pasa un número arbitrario de argumentos al constructor. es posible?

Lo que quiero hacer es algo como esto (pero el siguiente código no funciona):

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

La respuesta

A partir de las respuestas aquí, quedó claro que no hay una forma integrada de llamar.apply() con elnew operador. Sin embargo, la gente sugirió una serie de soluciones realmente interesantes para el problema.

Mi solución preferida fueeste de Matthew Crumley (Lo he modificado para pasar elarguments propiedad):

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

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

Respuestas a la pregunta(30)

Su respuesta a la pregunta