si bien recuerdo lo que dice la referencia que siempre consulto, invocar Array sin o con el keyword new produce el mismo resultado. cuando se omite, el propio javascript lo interpreta como si tuviera el keyword. por tanto, ambas formas son validas y no tiene alguna diferencia mas alla de como se escribe. sin embargo, notese que esto sucede solamente con algunos constructores nativos de javascript. considera por ejemplo Object y RegExp.
Código:
// ambas formas evaluan al valor 0 ;
typeof Object(0) +" : "+ typeof new Object(0); // object : object ;
// ambas formas evaluan a la expresion /(?:)/ ;
typeof RegExp('') +" : "+ typeof new RegExp(''); // function : function ;
// ambas formas evaluan a array vacios ;
typeof Array() +" : "+ typeof new Array(); // object : object ;
en contraste a otros constructores como Date, Number, Boolean y otros, produce diferentes resultados o tipos.
Código:
// evaluan el mismo tipo pero diferentes valores, ver mas adelante ;
typeof Date(0) +" : "+ typeof new Date(0); // object : object ;
// ambos evaluan a cero y diferentes tipos ;
typeof Number(0) +" : "+ typeof new Number(0); // integer : object ;
// ambos evaluan a false con diferentes tipos ;
typeof Boolean(0) +" : "+ typeof new Boolean(0); // boolean : object ;
el ejemplo de Date es interesante. cuando se omite
new, independientemente de los parametros suplidos, el interprete siempre devuelve la fecha actual. por el contrario, cuando
new esta presente, el interprete devuelve la fecha de acuerdo a los parametros suplidos. en conclusion, los resultados dependen del constructor. en el caso de Array, ambas formas producen el mismo resultado.