Wrapper-objekter i JavaScript
Denne artikel forklarer om wrapper-objekter i JavaScript.
YouTube Video
Wrapper-objekter
JavaScript har primitivtyper og objekter til at håndtere dem (indpakningsobjekter).
Primære typer
Primitivtyper repræsenterer en enkelt værdi og er enkle og letvægts. Disse er uforanderlige (uændrede) og har ikke direkte objektmetoder eller egenskaber, men de kan midlertidigt konverteres til wrapper-objekter til operationer.
string
og number
er eksempler på primitivtyper. Indpakningsobjekter starter derimod med stort begyndelsesbogstav, som String
og Number
.
Wrapper-objekter
For at manipulere primitive typer genererer JavaScript midlertidigt wrapper-objekter (Object
-wrappers). Wrapper-objekter indeholder metoder og egenskaber for de primitive typer.
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, der wrapper en primitivnumber
. Ved eksplicit at oprette etNumber
objekt kan du håndtere tal som ennumber
, men det anbefales normalt at bruge den primitivenumber
type.
typeof numObject
er"object"
, mentypeof 42
er"number"
.
- Vær opmærksom på, at brugen af
new
-operatoren til at generere et nyt wrapper-objekt giver et andet resultat end at kaldeNumber
som en funktion. Når det kaldes som en funktion, returneres et primitivtnumber
.
String
1let strObject = new String("Hello"); // Wrapper object
2
3console.log(typeof strObject); // object
4console.log(strObject.valueOf()); // Hello
- Det er en objekttype, der wrapper en primitiv
string
. Ved at bruge etString
objekt kan du få adgang til strengens egenskaber og metoder, men normalt bruges en primitivstring
.
typeof strObject
er"object"
, mentypeof "Hello"
er"string"
.
- Ligesom
Number
returnerer kald påString
som en funktion 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, der wrapper en primitiv
boolean
. Du kan også eksplicit oprette etBoolean
objekt, men normalt bruges en primitivboolean
type.
typeof boolObject
er"object"
, mentypeof true
er"boolean"
.
- På samme måde som
Number
returnerer kald påBoolean
som en 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 bruge
Object
til at oprette en wrapper-objekt forSymbol
, men generelt bruger du den primitive typeSymbol
direkte.
Forskelle mellem Primitive Typer og Wrapper-Objekter
- Primitive typer er lette og hukommelseseffektive, men de har ikke direkte egenskaber eller metoder. Men i JavaScript oprettes midlertidige wrapper-objekter automatisk, når det er nødvendigt for at levere metoder og egenskaber, 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);
- Wrapper-objekter er eksplicit genererede objekter, som kan påvirke hukommelse og ydeevne, så det anbefales generelt at bruge primitive typer.
Konklusion
- Primitivtyper: Letvægtsdatatyper såsom
number
,string
,boolean
,null
,undefined
ogsymbol
, der ikke har direkte metoder. - Wrapper-objekter: Objekter som
Number
,String
ogBoolean
, der midlertidigt konverteres fra primitivtyper.
Du kan følge med i ovenstående artikel ved hjælp af Visual Studio Code på vores YouTube-kanal. Husk også at tjekke YouTube-kanalen.