Wrapper-objekt i JavaScript
Den här artikeln förklarar wrapper-objekt i JavaScript.
YouTube Video
Omslagsobjekt
JavaScript har primitiva typer och objekt för att hantera dem (omslagsobjekt).
Primitiva typer
Primitiva typer representerar ett enda värde och är enkla och lättviktiga. Dessa är oföränderliga (oföränderliga) och har inte direkt objektmetoder eller egenskaper, men de kan tillfälligt konverteras till omslagsobjekt för operationer.
string
och number
är exempel på primitiva typer. Å andra sidan börjar omslagsobjekt med versal bokstav, som String
och Number
.
Wrapper-objekt
För att manipulera primitiva typer genererar JavaScript tillfälliga omslagsobjekt (Object
-omslag). Omslagsobjekt innehåller metoder och egenskaper för de primitiva typerna.
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
är en objekttyp som omsluter en primitivnumber
. Genom att uttryckligen skapa ettNumber
-objekt kan du hantera siffror som ennumber
, men det rekommenderas vanligtvis att använda den primitiva typennumber
.
typeof numObject
är"object"
, mentypeof 42
är"number"
.
- Var medveten om att användning av
new
-operatorn för att skapa ett nytt omslagsobjekt ger ett annat resultat än att anropaNumber
som en funktion. När det anropas som en funktion returneras en primitivnumber
.
String
1let strObject = new String("Hello"); // Wrapper object
2
3console.log(typeof strObject); // object
4console.log(strObject.valueOf()); // Hello
- Det är en objekttyp som omsluter en primitiv
string
. Genom att använda ettString
-objekt kan du komma åt strängegenskaper och -metoder, men vanligtvis används en primitivstring
.
typeof strObject
är"object"
, mentypeof "Hello"
är"string"
.
- Precis som
Number
returnerar anropet avString
som funktion en primitivstring
.
Boolean
1let boolObject = new Boolean(true); // Wrapper object
2
3console.log(typeof boolObject); // object
4console.log(boolObject.valueOf()); // true
- Det är en objekttyp som omsluter en primitiv
boolean
. Du kan också uttryckligen skapa ettBoolean
-objekt, men vanligtvis används en primitiv typ avboolean
.
typeof boolObject
är"object"
, mentypeof true
är"boolean"
.
- Liknande
Number
returnerar anropet avBoolean
som funktion en primitivboolean
.
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()); //
- Du kan använda
Object
för att skapa ett omslagsobjekt förSymbol
, men vanligtvis använder du den primitiva typenSymbol
direkt.
Skillnader mellan primitiva typer och omslagsobjekt
- Primitiva typer är lätta och minneseffektiva, men de har inga direkta egenskaper eller metoder. Dock, i JavaScript, även med primitiva typer, skapas tillfälliga omslagsobjekt automatiskt vid behov för att tillhandahålla metoder och egenskaper.
1let text = "Hello";
2
3// A temporary String object is created,
4// allowing access to the length property
5console.log(text.length);
- Omslagsobjekt är uttryckligt genererade objekt som kan påverka minne och prestanda, så det rekommenderas generellt att använda primitiva typer.
Slutsats
- Primitiva typer: Lätta typer som
number
,string
,boolean
,null
,undefined
ochsymbol
som inte har direkta metoder. - Omslagsobjekt: Objekt som
Number
,String
ochBoolean
som temporärt konverteras från primitiva typer.
Du kan följa med i artikeln ovan med hjälp av Visual Studio Code på vår YouTube-kanal. Vänligen kolla även in YouTube-kanalen.