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
Numberis een objecttype dat een primitiefnumberomhult. Door expliciet eenNumber-object te maken, kunt u getallen behandelen als eennumber, maar het wordt meestal aanbevolen om het primitievenumber-type te gebruiken.
typeof numObjectis"object", maartypeof 42is"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 vanNumberals een functie. Wanneer aangeroepen als functie, wordt een primitievenumbergeretourneerd.
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
stringomhult. Door eenString-object te gebruiken, kunt u toegang krijgen tot eigendommen en methoden van strings, maar meestal wordt een primitievestringgebruikt.
typeof strObjectis"object", maartypeof "Hello"is"string".
- Net als bij
Numberretourneert het aanroepen vanStringals 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
booleanomhult. U kunt ook expliciet eenBoolean-object maken, maar meestal wordt een primitiefboolean-type gebruikt.
typeof boolObjectis"object", maartypeof trueis"boolean".
- Net als bij
Numberretourneert het aanroepen vanBooleanals 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
Objectgebruiken 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,undefinedensymboldie geen directe methoden hebben. - Wrapper-objecten: Objecten zoals
Number,StringenBooleandie 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.