Entiendo la diferencia en comportamiento. Date()
devuelve una cadena que representa la fecha actual, y new Date()
devuelve una instancia del objeto Fecha cuyos métodos puedo llamar.¿Por qué necesito la palabra clave `new` para una instancia de` Fecha` en JavaScript?
Pero no sé por qué. JavaScript tiene un prototipo, por lo que Date
es una función y un objeto que tiene funciones miembro (métodos) que también son objetos. Pero no he escrito ni leído ningún JavaScript que se comporte de esta manera, y me gustaría entender la diferencia.
¿Alguien puede mostrarme un ejemplo de código de una función que tiene un método, devuelve una instancia con el nuevo operador y emite una cadena cuando se llama directamente? es decir, ¿cómo sucede algo como esto?
Date(); // returns "Fri Aug 27 2010 12:45:39 GMT-0700 (PDT)"
new Date(); // returns Object
new Date().getFullYear(); // returns 2010
Date().getFullYear(); // throws exception!
Solicitud muy específica, lo sé. Espero que sea algo bueno. :)
Re * * por qué: se trata de un desafortunado Hango ver de la implementación original de JavaScript que lo hizo en la especificación de ECMAScript: http://bclary.com/2004/11/07/#a-15.9.2 –
Ooh! Gracias. Amo el contexto y la historia. Eso está bien, ¿por qué? :) –
Gracias @Crescent. Lo he incorporado a mi respuesta para completarlo. –