Las ventajas de objeto y matriz literales sobre el uso de los respectivos constructores son:
- más corto y más legible
- más seguro: literales todavía funcionarán cuando los
Array
o Object
constructores se han anulado
- Posiblemente más rápido, aunque es poco probable que sea una consideración importante (cualquier cuello de botella se originará casi con certeza en otro lugar del código)
En el caso de las matrices, hay una ventaja adicional de un literal: es imposible crear una matriz con un único miembro utilizando el constructor Array
solo. Por ejemplo, [3]
creará una matriz con un elemento que es el número 3, mientras que new Array(3)
crea una matriz de longitud 3.
Actualización: el siguiente párrafo ya no es relevante ahora la cuestión ha sido editado.
En cuanto a los booleanos, parece que tiene una idea falsa: new Boolean(false)
no es lo mismo que false
. El constructor Boolean()
crea un objeto booleano, mientras que false
y true
son primitivas booleanas. De hecho, new Boolean(false)
se evalúa como true
cuando se fuerza en un booleano en, por ejemplo, una instrucción if
.En resumen, rara vez hay una razón para usar el constructor Boolean()
. Use true
y false
en su lugar. De forma similar, otras primitivas como cadenas y números tienen los constructores correspondientes String()
y Number()
que producen los objetos String
y Number
que son diferentes a las cadenas primitivas y los números, y generalmente se deben evitar.
'nueva booleano (verdadero)' no es equivalente a 'true' –
Editado con esta corrección. –