Обёрточные объекты в JavaScript

Обёрточные объекты в 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-канал.

YouTube Video