Differenza in queste 2 stringhe (JavaScript)

Sep 07 2020

Stavo cercando di creare variabili di tipi di dati stringa con valori in 2 modi.

  1. Come stringa letterale
  2. Utilizzo di una nuova parola chiave

Ma a me sembra che entrambi siano diversi nella rappresentazione su console.log . Qualcuno può dirmi se 2nd way non restituisce la stringa o è in qualche modo diverso?

var str1 = "abc";
var str2 = new String("def");
console.log(str1);
console.log(str2);

Previsto:

a B c D e F

Produzione:

Risposte

9 xMayank Sep 07 2020 at 05:07

JavaScript ha due categorie di tipi principali, primitive e oggetti.

typeof new String(); // "object"
typeof '';           // "string"

Per istruzioni di assegnazione di valori primitivi a una variabile come:

var str1 = "Hi";

JavaScript creerà internamente la variabile utilizzando:

String("Hi")

L'uso della nuova parola chiave funziona in modo diverso e restituisce invece un oggetto.

4 GauravMogha Sep 07 2020 at 05:07

La chiamata new String(something)crea un oggetto istanza String.

I risultati sono gli stessi tramite console.log () perché estrarrà semplicemente la stringa primitiva dall'istanza String che gli passi.

Quindi: semplicemente String () restituisce una primitiva di stringa. new String ('xyz') restituisce un oggetto costruito dal costruttore String.

Raramente è necessario costruire in modo esplicito un'istanza String.

2 LarsNielsen Sep 07 2020 at 05:07

Stai lavorando con due cose diverse. Il var str1 = "abc"ti dà un primitivo. Mentre var str2 = new String("def");ti dà un oggetto stringa. Questi due tipi si comportano in modo diverso

AkhilRavindran Sep 07 2020 at 05:12

L'oggetto String ti consente di lavorare con una serie di caratteri; avvolge il tipo di dati primitivo stringa di Javascript con un numero di metodi di supporto.

Poiché JavaScript converte automaticamente tra primitive stringa e oggetti String, è possibile chiamare uno qualsiasi dei metodi di supporto dell'oggetto String su una primitiva stringa.

Unknow Sep 07 2020 at 05:07

Quando si stampa un oggetto, spesso la console stampa le proprietà dell'oggetto.

Se è una primitiva, la console stampa semplicemente il valore.

La primitiva non è inscatolata, ma se crei una stringa con un costruttore la stringa è inscatolata nell'oggetto e ha sempre proprietà.

Se è solo un letterale, ha proprietà solo quando si accede alla proprietà di una stringa con l' .operatore perché si verifica il boxing, ma dopo di ciò, è ancora un letterale senza aggiunta di nulla, a causa di ciò quando si stampa "The cat is very grumpy", basta stampare il valore e niente Di Più. Le primitive letterali non sono sempre oggetti con proprietà, sono solo oggetti quando sono inscatolati.