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
Numberer 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 numObjecter"object", mentypeof 42er"number".
- Vær oppmerksom på at bruk av
new-operatoren for å generere et nytt omslagsobjekt gir et annet resultat enn å kalleNumbersom 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 strObjecter"object", mentypeof "Hello"er"string".
- Som
Numberreturnerer også kall påStringsom 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 boolObjecter"object", mentypeof trueer"boolean".
- I likhet med
Numberreturnerer også kall påBooleansom 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
Objectfor å lage et omslagsobjekt forSymbol, men vanligvis bruker du den primære typenSymboldirekte.
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,undefinedogsymbolsom ikke har direkte metoder. - Wrapper-Objekter: Objekter som
Number,StringogBooleansom 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.