Обёрточные объекты в JavaScript
В этой статье объясняется, что такое обёрточные объекты в JavaScript.
YouTube Video
Объекты-оболочки
JavaScript имеет примитивные типы и объекты для их обработки (объекты-оболочки).
Примитивные типы
Примитивные типы представляют однозначное значение и являются простыми и легковесными. Они являются неизменяемыми (неменяемыми) и не имеют напрямую методов или свойств объекта, но могут временно преобразовываться в объекты-обёртки для выполнения операций.
string и number - это примеры примитивных типов. С другой стороны, объекты-оболочки начинаются с заглавной буквы, например, String и Number.
Обёрточные объекты
Для работы с примитивными типами JavaScript временно создаёт объекты-обёртки (Object-обёртки). Объекты-обёртки содержат методы и свойства для примитивных типов.
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— это тип объекта, который обёртывает примитивныйnumber. Создавая объектNumberявно, вы можете работать с числами как сnumber, но обычно рекомендуется использовать примитивный типnumber.
typeof numObject— это"object", аtypeof 42— это"number".
- Имейте в виду, что использование оператора
newдля создания нового объекта-обёртки даёт другой результат по сравнению с вызовом функцииNumber. При вызове в качестве функции возвращается примитивное значениеnumber.
String
1let strObject = new String("Hello"); // Wrapper object
2
3console.log(typeof strObject); // object
4console.log(strObject.valueOf()); // Hello
- Это тип объекта, который обёртывает примитивный
string. Используя объектString, вы можете обращаться к свойствам и методам строк, но обычно используется примитивный типstring.
typeof strObject— это"object", аtypeof "Hello"— это"string".
- Как и в случае с
Number, вызов функцииStringвозвращает примитивныйstring.
Boolean
1let boolObject = new Boolean(true); // Wrapper object
2
3console.log(typeof boolObject); // object
4console.log(boolObject.valueOf()); // true
- Это тип объекта, который обёртывает примитивный
boolean. Вы также можете явно создать объектBoolean, но обычно используется примитивный типboolean.
typeof boolObject— это"object", аtypeof true— это"boolean".
- Аналогично
Number, вызов функцииBooleanвозвращает примитивный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()); //
- Вы можете использовать
Objectдля создания объекта-обёртки дляSymbol, но обычно используют примитивный типSymbolнапрямую.
Различия между примитивными типами и объектами-обёртками
- Примитивные типы лёгковесны и экономны в использовании памяти, но не имеют прямых свойств или методов. Однако в JavaScript, даже для примитивных типов, временные объекты-обёртки автоматически создаются при необходимости для предоставления методов и свойств.
1let text = "Hello";
2
3// A temporary String object is created,
4// allowing access to the length property
5console.log(text.length);- Объекты-обёртки — это явно создаваемые объекты, которые могут повлиять на память и производительность, поэтому обычно рекомендуется использовать примитивные типы.
Вывод
- Примитивные типы: Легковесные типы, такие как
number,string,boolean,null,undefinedиsymbol, которые не имеют прямых методов. - Объекты-обёртки: Объекты, такие как
Number,StringиBoolean, которые временно преобразуются из примитивных типов.
Вы можете следовать этой статье, используя Visual Studio Code на нашем YouTube-канале. Пожалуйста, также посмотрите наш YouTube-канал.