Es 2017 y tenía la misma pregunta en mente. Lo que encontré como una respuesta después de leer:
"La forma más sencilla de realizar una conversión de tipo explícita es utilizar las funciones Boolean(), Number(), String() u Object(). vimos estas funciones como constructores para objetos envoltorios. Sin embargo, cuando se invocan sin el nuevo operador, funcionan como funciones de conversión y realizan conversiones de tipo ... "
" Las clases incorporadas de núcleo JavaScript intentan valorOf() conversión antes toString() conversión, excepto la clase Date, que realiza la conversión toString() ".
Así que Date() invocado sin la nueva palabra clave realiza una conversión de tipo. Y dado que Date es un objeto y debe producirse un objeto a primitivo, date object de forma predeterminada llama a toString() (aunque Date también tiene un método valueOf() significativo).
Lo encontré en el libro "JavaScript: La guía definitiva". Dejándolo aquí para las futuras generaciones que acaban de empezar a aprender JS :)
Mejor respuesta hasta el momento –
¿Algún pseudocódigo de cómo se implementa la función Date() para que pueda funcionar como un constructor y una función normal? gracias – Benny
@Benny observe lo siguiente: 'function Test() { var private =" private value "; this.public = "valor público"; return "return value"; } ' Llamar' new Test() 'crea un objeto con valores privados y públicos. Llamar a 'Test()' devuelve una cadena. – musicin3d