Wrapper-objekter i JavaScript
Denne artikkelen forklarer wrapper-objekter i JavaScript.
YouTube Video
Wrapper-objekter
JavaScript har primitive typer og objekter for å håndtere dem (wrapper-objekter).
Primitive typer
Primitive typer representerer en enkelt verdi og er enkle og lette. Disse er uforanderlige (ikke endringsbare), og har ikke direkte objektmetoder eller egenskaper, men de kan midlertidig konverteres til wrapper-objekter for operasjoner.
string
og number
er eksempler på primitive typer. Wrapper-objekter, derimot, starter med stor bokstav, som String
og Number
.
Wrapper-objekter
For å manipulere primitive typer genererer JavaScript midlertidige omslagsobjekter (Object
-omslag). Omslagsobjekter inneholder metoder og egenskaper for de primitive typene.
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
er en objekttype som omslutter en primitivnumber
. Ved eksplisitt å opprette etNumber
-objekt kan du håndtere tall som ennumber
, men det anbefales vanligvis å bruke den primitive typennumber
.
typeof numObject
er"object"
, mentypeof 42
er"number"
.
- Vær oppmerksom på at bruk av
new
-operatoren for å generere et nytt omslagsobjekt gir et annet resultat enn å kalleNumber
som en funksjon. Når den kalles som en funksjon, returneres en primitivnumber
.
String
1let strObject = new String("Hello"); // Wrapper object
2
3console.log(typeof strObject); // object
4console.log(strObject.valueOf()); // Hello
- Det er en objekttype som omslutter en primitiv
string
. Ved å bruke etString
-objekt kan du få tilgang til strengegenskaper og -metoder, men vanligvis brukes en primitivstring
.
typeof strObject
er"object"
, mentypeof "Hello"
er"string"
.
- Som
Number
returnerer også kall påString
som en funksjon en primitivstring
.
Boolean
1let boolObject = new Boolean(true); // Wrapper object
2
3console.log(typeof boolObject); // object
4console.log(boolObject.valueOf()); // true
- Det er en objekttype som omslutter en primitiv
boolean
. Du kan også eksplisitt opprette etBoolean
-objekt, men vanligvis brukes den primitive typenboolean
.
typeof boolObject
er"object"
, mentypeof true
er"boolean"
.
- I likhet med
Number
returnerer også kall påBoolean
som en funksjon 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 bruke
Object
for å lage et omslagsobjekt forSymbol
, men vanligvis bruker du den primære typenSymbol
direkte.
Forskjeller mellom primitive typer og omslagsobjekter
- Primitive typer er lette og minneeffektive, men de har ikke direkte egenskaper eller metoder. Imidlertid blir det i JavaScript automatisk opprettet midlertidige omslagsobjekter når det er nødvendig for å gi tilgang til metoder og egenskaper, selv for primitive typer.
1let text = "Hello";
2
3// A temporary String object is created,
4// allowing access to the length property
5console.log(text.length);
- Omslagsobjekter er eksplisitt genererte objekter som kan påvirke minne og ytelse, så det anbefales generelt å bruke primitive typer.
Konklusjon
- Primitive Typer: Letttyper som
number
,string
,boolean
,null
,undefined
ogsymbol
som ikke har direkte metoder. - Wrapper-Objekter: Objekter som
Number
,String
ogBoolean
som midlertidig blir konvertert fra primitive typer.
Du kan følge med på artikkelen ovenfor ved å bruke Visual Studio Code på vår YouTube-kanal. Vennligst sjekk ut YouTube-kanalen.