Perché un costruttore può essere utilizzato senza la parola chiave 'new' in Javascript?

3

Ho trovato che la data può essere utilizzata senza la parola chiave new .

Date(1)
> "Thu May 28 2015 15:54:20 GMT+0800 (CST)"
new Date(1)
> Thu Jan 01 1970 08:00:00 GMT+0800 (CST)

Mi chiedevo se ci sia qualche effetto collaterale nell'usarlo senza new .. Perché dovrebbe essere progettato in questo modo?

    
posta Firegun 28.05.2015 - 09:58
fonte

1 risposta

4

In JavaScript un costruttore è solo una funzione ordinaria. Qualsiasi funzione che può essere chiamata come costruttore con ' new ' può essere chiamata come una funzione ordinaria. Ma le funzioni saranno quasi sempre scritte come una funzione di costruzione o non di costruzione, e l'utilizzo nell'altro modo è un errore.

Gli oggetti built-in tuttavia sono progettati in modo specifico in modo da poterli usare in entrambi i modi (come costruttore e come funzioni ordinarie) con due risultati diversi. Ad esempio new Date(1) crea un nuovo oggetto Date (come ci si aspetterebbe da un costruttore) mentre Date(1) restituisce una rappresentazione stringa della data corrispondente, che è forse più sorprendente.

    
risposta data 28.05.2015 - 14:23
fonte