Wrapper-objekt i JavaScript

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 primitiv number. Genom att uttryckligen skapa ett Number-objekt kan du hantera siffror som en number, men det rekommenderas vanligtvis att använda den primitiva typen number.

typeof numObject är "object", men typeof 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 anropa Number som en funktion. När det anropas som en funktion returneras en primitiv number.

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 ett String-objekt kan du komma åt strängegenskaper och -metoder, men vanligtvis används en primitiv string.

typeof strObject är "object", men typeof "Hello" är "string".

  • Precis som Number returnerar anropet av String som funktion en primitiv string.

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 ett Boolean-objekt, men vanligtvis används en primitiv typ av boolean.

typeof boolObject är "object", men typeof true är "boolean".

  • Liknande Number returnerar anropet av Boolean som funktion 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 använda Object för att skapa ett omslagsobjekt för Symbol, men vanligtvis använder du den primitiva typen Symbol direkt.

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, undefined och symbol som inte har direkta metoder.
  • Omslagsobjekt: Objekt som Number, String och Boolean som 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.

YouTube Video