Oggetti wrapper in JavaScript
Questo articolo spiega gli oggetti wrapper in JavaScript.
YouTube Video
Oggetti wrapper
JavaScript ha tipi primitivi e oggetti per gestirli (oggetti wrapper).
Tipi primitivi
I tipi primitivi rappresentano un valore singolo e sono semplici e leggeri. Questi sono immutabili (immutabili) e non hanno direttamente metodi o proprietà degli oggetti, ma possono essere temporaneamente convertiti in oggetti involucro per le operazioni.
string
e number
sono esempi di tipi primitivi. D'altra parte, gli oggetti wrapper iniziano con una lettera maiuscola, come String
e Number
.
Oggetti Wrapper
Per manipolare i tipi primitivi, JavaScript genera temporaneamente oggetti wrapper (Object
wrapper). Gli oggetti wrapper contengono metodi e proprietà per i tipi primitivi.
Number
1let numObject = new Number(42); // Wrapper object
2
3console.log(typeof numObject); // object
4console.log(numObject.valueOf()); // 42
5
6let numValue = Number(42); // Return primitive value
7
8console.log(typeof numValue); // number
9console.log(numValue); // 42
Number
è un tipo di oggetto che avvolge un tipo primitivonumber
. Creando esplicitamente un oggettoNumber
, puoi gestire i numeri come unnumber
, ma è generalmente consigliato utilizzare il tipo primitivonumber
.
typeof numObject
è"object"
, matypeof 42
è"number"
.
- Tieni presente che usare l'operatore
new
per generare un nuovo oggetto wrapper produce un risultato diverso rispetto alla chiamata diNumber
come funzione. Quando viene chiamato come una funzione, restituisce un tipo primitivonumber
.
String
1let strObject = new String("Hello"); // Wrapper object
2
3console.log(typeof strObject); // object
4console.log(strObject.valueOf()); // Hello
- È un tipo di oggetto che avvolge un tipo primitivo
string
. Usando un oggettoString
, puoi accedere alle proprietà e ai metodi delle stringhe, ma di solito viene utilizzato un tipo primitivostring
.
typeof strObject
è"object"
, matypeof "Hello"
è"string"
.
- Come
Number
, chiamareString
come funzione restituisce un tipo primitivostring
.
Boolean
1let boolObject = new Boolean(true); // Wrapper object
2
3console.log(typeof boolObject); // object
4console.log(boolObject.valueOf()); // true
- È un tipo di oggetto che avvolge un tipo primitivo
boolean
. Puoi anche creare esplicitamente un oggettoBoolean
, ma di solito si utilizza un tipo primitivoboolean
.
typeof boolObject
è"object"
, matypeof true
è"boolean"
.
- Simile a
Number
, chiamareBoolean
come funzione restituisce un tipo primitivoboolean
.
BigInt
1let bigIntObject = Object(9007199254740991n); // Wrapper object
2
3console.log(typeof bigIntObject); // object
4console.log(bigIntObject.valueOf()); // 9007199254740991n
5
6let bigIntValue = BigInt(9007199254740991); // Return primitive BigInt
7
8console.log(typeof bigIntValue); // bigint
9console.log(bigIntValue); // 9007199254740991n
10
11// Error
12let bigIntObject2 = new BigInt(9007199254740991n);
Object
を使ってBigInt
のラッパーオブジェクトを生成できますが、通常はプリミティブ型のbigint
を直接使うのが一般的です。
typeof bigIntObject
は"object"
であるのに対し、typeof 9007199254740991n
は"bigint"
です。
BigInt
を関数として呼び出すとプリミティブなbigint
を返しますが、new
演算子をつけてBigInt
のラッパーオブジェクトを生成することはできません。
Symbol
1let symObject = Object(Symbol("id")); // Wrapper object for Symbol
2
3console.log(typeof symObject); // object
4console.log(symObject.valueOf()); //
- Puoi usare
Object
per creare un oggetto wrapper perSymbol
, ma generalmente si utilizza direttamente il tipo primitivoSymbol
.
Differenze tra Tipi Primitivi e Oggetti Wrapper
- I tipi primitivi sono leggeri ed efficienti in termini di memoria, ma non possiedono proprietà o metodi diretti. Tuttavia, in JavaScript, anche con i tipi primitivi, oggetti wrapper temporanei vengono creati automaticamente quando necessario per fornire metodi e proprietà.
1let text = "Hello";
2
3// A temporary String object is created,
4// allowing access to the length property
5console.log(text.length);
- Gli oggetti wrapper sono oggetti generati esplicitamente che possono influire su memoria e prestazioni, quindi si consiglia generalmente di utilizzare i tipi primitivi.
Conclusione
- Tipi Primitivi: Tipi leggeri come
number
,string
,boolean
,null
,undefined
esymbol
che non hanno metodi diretti. - Oggetti Wrapper: Oggetti come
Number
,String
eBoolean
che vengono temporaneamente convertiti da tipi primitivi.
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.