Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: autoboxing, primitive wrapper, string methods, javascript internals

Почему к переменной примитивного типа string можно применять методы, если у примитива методов не существует?

Вопрос проверяет понимание механизма автоупаковки примитивов в JavaScript и того, как работают методы на примитивных типах.

Короткий ответ

В JavaScript примитивные типы (string, number, boolean) временно оборачиваются в объекты-обертки при попытке доступа к свойствам или методам. Когда вы вызываете метод на строке, JavaScript создает временный объект String, вызывает метод, а затем уничтожает его. Это позволяет примитивам вести себя как объекты без изменения их природы.

Длинный ответ

Как примитивы получают методы

В JavaScript примитивные типы данных, такие как строки, числа и булевы значения, не являются объектами и не имеют собственных методов. Однако вы можете вызывать методы на них, например 'hello'.toUpperCase(). Это возможно благодаря механизму, который называется автоупаковка (autoboxing).

Механизм работы

Когда вы обращаетесь к свойству или методу примитива, JavaScript временно создает объект-обертку соответствующего типа (String, Number, Boolean). Затем вызывается нужный метод, после чего объект-обертка уничтожается. Примитив остается неизменным.

let str = 'hello';
console.log(str.length); // 5
// Внутренне происходит:
// let temp = new String('hello');
// console.log(temp.length);
// temp = null;

Практический пример

let name = 'John';
let upperName = name.toUpperCase();
console.log(upperName); // 'JOHN'
console.log(name); // 'John' - оригинал не изменился

Важные нюансы

  • Автоупаковка работает только для чтения свойств и вызова методов. При попытке присвоить свойство примитиву, оно будет проигнорировано (в строгом режиме — ошибка).
  • Объекты-обертки существуют только временно, поэтому их нельзя использовать для хранения данных.
  • Этот механизм позволяет примитивам иметь удобный интерфейс, сохраняя производительность и простоту.

Вывод

Автоупаковка — это удобный механизм JavaScript, который позволяет работать с примитивами как с объектами без потери производительности. Его стоит понимать для корректной работы с методами примитивов и избежания неожиданного поведения при присвоении свойств.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#autoboxing

#primitive wrapper

#string methods

#javascript internals

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию