Non essere confuso dal fatto che stringhe, numeri e valori letterali booleani possono essere trattati come un oggetto con proprietà (ad es.., true.toString ()
). Quando questi valori primitivi vengono trattati come oggetti tentando di accedere alle loro proprietà, JavaScript creerà un oggetto wrapper dal costruttore associato della primitiva, in modo che sia possibile accedere alle proprietà e ai metodi dell'oggetto wrapper.
Una volta che si accede alle proprietà, l'oggetto wrapper viene scartato. Questa conversione ci consente di scrivere codice che lo farebbe apparire come se un valore primitivo fosse, in effetti, un oggetto. A dire il vero, quando viene trattato come un oggetto nel codice, JavaScript lo convertirà in un oggetto, quindi l'accesso alla proprietà funzionerà, e poi lo convertirà in un valore primitivo una volta restituito un valore. La cosa fondamentale da notare qui è che cosa sta succedendo e che JavaScript lo sta facendo dietro le quinte.
Ecco alcuni esempi per dimostrare di cosa sto parlando:
Esempio di stringa: sample56.html
Numero di campione: sample57.html
Esempio booleano: sample58.html
Quando si accede direttamente a una proprietà su un numero primitivo (non memorizzata in una variabile), è necessario prima valutare il numero prima che il valore sia trattato come un oggetto (ad es.., (1) .toString ();
o 1 ... toString ();
). Perché due punti? Il primo punto è considerato un decimale numerico, non un operatore per accedere alle proprietà dell'oggetto.
I valori letterali / primitivi che rappresentano una stringa, un numero o un booleano sono più veloci da scrivere e sono più concisi nella forma letterale.
Dovresti usare il valore letterale per questo. Inoltre, la precisione del tipo di
l'operatore dipende da come si crea il valore (letterale rispetto al richiamo del costruttore). Se crei una stringa, un numero o un oggetto booleano, il tipo di
l'operatore riporta il tipo come oggetto. Se usi letterali, il tipo di
l'operatore restituisce un nome stringa del tipo di valore effettivo (ad es., typeof 'foo' // restituisce 'string'
).
Dimostro questo fatto nel seguente codice.
Esempio: sample59.html
Se il tuo programma dipende da tipo di
operatore per identificare i valori stringa, numero o booleani in termini di quei tipi primitivi, si dovrebbe evitare il Stringa
, Numero
, e booleano
costruttori.