È il 2017 e avevo in mente la stessa domanda. Quello che ho trovato come risposta dopo alcune letture:
"Il modo più semplice per eseguire una conversione di tipo esplicito consiste nell'utilizzare le funzioni booleana(), Number(), String() o Object(). visto queste funzioni come costruttori per gli oggetti wrapper. Quando invocati senza il nuovo operatore, tuttavia, funzionano come funzioni di conversione ed eseguono conversioni di tipo .. "
" Le classi integrate del tentativo di nucleo JavaScript valueOf() conversione prima conversione toString(), ad eccezione della classe Date, che esegue la conversione toString(). "
Quindi Data() invocato senza la nuova parola chiave esegue una conversione di tipo. E poiché Date è un oggetto e deve essere eseguito un oggetto-primitivo, gli oggetti data per impostazione predefinita chiamano toString() (sebbene Date abbia anche un metodo valueOf() significativo).
Trovato sul libro "JavaScript: The Definitive Guide". Lasciandolo qui per le generazioni future che hanno appena iniziato a imparare JS :)
Risposta migliore fino ad ora –
qualsiasi pseudo-codice di come la funzione Date() è implementata in modo che possa funzionare sia come costruttore che come funzione normale? grazie – Benny
@Benny si osservi quanto segue: 'function Test() { var private =" private value "; this.public = "valore pubblico"; restituisce "valore di ritorno"; } ' Chiamare' new Test() 'crea un oggetto con valori privati e pubblici. Chiamando 'Test()' restituisce una stringa. – musicin3d