В JavaScript "боксинг" (boxing) — это процесс автоматического преобразования примитивного значения (например, строки, числа, булевого значения) во временный объект-обертку (wrapper object) соответствующего встроенного конструктора (String, Number, Boolean) при попытке доступа к его свойствам или методам.
Это происходит, когда вы обращаетесь к свойству или методу примитива, как если бы он был объектом. JavaScript временно создает объект-обертку, выполняет операцию с этим объектом, а затем уничтожает его.
Примеры:
javascript
Важно понимать, что сами примитивы не имеют свойств или методов. Боксинг делает работу с примитивами более удобной, позволяя использовать синтаксис объектного доступа для выполнения операций.
Боксинг происходит неявно. Вы не создаете объект-обертку явно (хотя это возможно с помощью new String(), new Number(), new Boolean(), но это не рекомендуется).
Различия между примитивами и объектами-обертками:
| Примитив | Объект-обертка | |
|---|---|---|
| Тип | Строка, Число, Булев, Symbol, Null, Undefined, BigInt | Ссылка на объект |
| Изменчивость | Неизменяемый | Изменяемый |
| Сравнение | Сравнение по значению | Сравнение по ссылке |
| Создание | Литерал, typeof возвращает примитивный тип | new, typeof возвращает 'object' |