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 anropaNumbersom 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
Numberreturnerar anropet avStringsom 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
Numberreturnerar anropet avBooleansom 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
Objectför att skapa ett omslagsobjekt förSymbol, men vanligtvis använder du den primitiva typenSymboldirekt.
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,undefinedochsymbolsom inte har direkta metoder. - Omslagsobjekt: Objekt som
Number,StringochBooleansom 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.