Wrapper-objecten in JavaScript
Dit artikel legt uit wat wrapper-objecten in JavaScript zijn.
YouTube Video
Wrapper-objecten
JavaScript heeft primitieve typen en objecten om deze te verwerken (wrapper-objecten).
Primitieve typen
Primitieve typen vertegenwoordigen een enkele waarde en zijn eenvoudig en lichtgewicht. Deze zijn onveranderlijk (niet aan te passen) en hebben niet direct objectmethoden of -eigenschappen, maar ze kunnen tijdelijk worden omgezet in wrapper-objecten voor bewerkingen.
string
en number
zijn voorbeelden van primitieve typen. Aan de andere kant beginnen wrapper-objecten met een hoofdletter, zoals String
en Number
.
Wrapper-objecten
Om primitieve typen te manipuleren, genereert JavaScript tijdelijk wrapper-objecten (Object
-wrappers). Wrapper-objecten bevatten methoden en eigenschappen voor de primitieve typen.
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
is een objecttype dat een primitiefnumber
omhult. Door expliciet eenNumber
-object te maken, kunt u getallen behandelen als eennumber
, maar het wordt meestal aanbevolen om het primitievenumber
-type te gebruiken.
typeof numObject
is"object"
, maartypeof 42
is"number"
.
- Wees ervan bewust dat het gebruik van de
new
-operator om een nieuw wrapper-object te genereren een ander resultaat oplevert dan het aanroepen vanNumber
als een functie. Wanneer aangeroepen als functie, wordt een primitievenumber
geretourneerd.
String
1let strObject = new String("Hello"); // Wrapper object
2
3console.log(typeof strObject); // object
4console.log(strObject.valueOf()); // Hello
- Het is een objecttype dat een primitieve
string
omhult. Door eenString
-object te gebruiken, kunt u toegang krijgen tot eigendommen en methoden van strings, maar meestal wordt een primitievestring
gebruikt.
typeof strObject
is"object"
, maartypeof "Hello"
is"string"
.
- Net als bij
Number
retourneert het aanroepen vanString
als een functie een primitievestring
.
Boolean
1let boolObject = new Boolean(true); // Wrapper object
2
3console.log(typeof boolObject); // object
4console.log(boolObject.valueOf()); // true
- Het is een objecttype dat een primitieve
boolean
omhult. U kunt ook expliciet eenBoolean
-object maken, maar meestal wordt een primitiefboolean
-type gebruikt.
typeof boolObject
is"object"
, maartypeof true
is"boolean"
.
- Net als bij
Number
retourneert het aanroepen vanBoolean
als een functie een primitieveboolean
.
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()); //
- U kunt
Object
gebruiken om een wrapper-object te maken voorSymbol
, maar meestal gebruikt u direct het primitieve typeSymbol
.
Verschillen tussen primitieve typen en wrapper-objecten
- Primitieve typen zijn lichtgewicht en geheugenefficiënt, maar ze hebben geen directe eigenschappen of methoden. In JavaScript worden echter, zelfs bij primitieve typen, tijdelijke wrapper-objecten automatisch gecreëerd wanneer dat nodig is om methoden en eigenschappen aan te bieden.
1let text = "Hello";
2
3// A temporary String object is created,
4// allowing access to the length property
5console.log(text.length);
- Wrapper-objecten zijn expliciet gegenereerde objecten die geheugen en prestaties kunnen beïnvloeden, dus het gebruik van primitieve typen wordt over het algemeen aanbevolen.
Conclusie
- Primitieve Typen: Lichtgewicht typen zoals
number
,string
,boolean
,null
,undefined
ensymbol
die geen directe methoden hebben. - Wrapper-objecten: Objecten zoals
Number
,String
enBoolean
die tijdelijk worden geconverteerd van primitieve typen.
Je kunt het bovenstaande artikel volgen met Visual Studio Code op ons YouTube-kanaal. Bekijk ook het YouTube-kanaal.