Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/12/2010, 14:22
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Diferencias de Definicion de Array en Javascript

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.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.