¿Cuándo * no * usa el nuevo trabajo en las incorporadas? [duplicar]
Esta pregunta ya tiene una respuesta aquí:
¿Cuál es la diferencia entre Array (1) y el nuevo Array (1) en JavaScript? 3 respuestas¿Cuál es la palabra clave 'nueva' en JavaScript? 14 respuestasJugando con objetos y constructores de JavaScript integrados, noté algo un poco extraño.
A veces, es posible obtener nuevos objetos llamando a un constructor sinnew
. Por ejemplo:
> new Array(1,2,3,4)
[1, 2, 3, 4]
> Array(1,2,3,4)
[1, 2, 3, 4]
Pero a veces esto no funciona:
> Date()
"Thu Jun 05 2014 00:28:10 GMT-0600 (CST)"
> new Date()
Date 2014-06-05T06:28:10.876Z
¿El comportamiento de las funciones incorporadas del constructor no nuevo está definido en alguna parte de la especificación ECMAScript? Tenga en cuenta que este comportamiento es realmente útil; Puedo hacer una copia no dispersa de una matriz llamandoArray.apply(arr)
, pero solo me sentiría cómodo haciendo eso si fuera multiplataforma.