Wrapper-objekter i JavaScript

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 primitiv number. Ved eksplisitt å opprette et Number-objekt kan du håndtere tall som en number, men det anbefales vanligvis å bruke den primitive typen number.

typeof numObject er "object", men typeof 42 er "number".

  • Vær oppmerksom på at bruk av new-operatoren for å generere et nytt omslagsobjekt gir et annet resultat enn å kalle Number som en funksjon. Når den kalles som en funksjon, returneres en primitiv number.

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 et String-objekt kan du få tilgang til strengegenskaper og -metoder, men vanligvis brukes en primitiv string.

typeof strObject er "object", men typeof "Hello" er "string".

  • Som Number returnerer også kall på String som en funksjon en primitiv string.

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 et Boolean-objekt, men vanligvis brukes den primitive typen boolean.

typeof boolObject er "object", men typeof true er "boolean".

  • I likhet med Number returnerer også kall på Boolean som en funksjon en primitiv boolean.

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 for Symbol, men vanligvis bruker du den primære typen Symbol 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 og symbol som ikke har direkte metoder.
  • Wrapper-Objekter: Objekter som Number, String og Boolean 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.

YouTube Video