Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: primitive, wrapper

Откуда у строк появляются методы вроде toString()?

Вопрос проверяет понимание механизма временного преобразования примитивов в объекты и работы прототипов.

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

Строки — это примитивы, но при обращении к методу JavaScript временно оборачивает строку в объект String. Этот объект содержит методы, определённые в String.prototype. После вызова метода временный объект сразу удаляется. Поэтому методы у строк выглядят как “родные”, хотя сами строки объектами не являются.

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

Определение

Автоупаковка (autoboxing) — это механизм, при котором примитив временно превращается в объект-обёртку для доступа к методам.

Что происходит при вызове метода у строки

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

  1. Есть примитив:

    const str = "hello";
    
  2. При вызове метода:

    str.toUpperCase();
    
  3. JavaScript:

    • Создаёт временный объект new String("hello")

    • Ищет метод в String.prototype

    • Вызывает метод

    • Удаляет временный объект

Где хранятся методы строк

  1. Методы не лежат “в строке”

  2. Они находятся в String.prototype

  3. Это можно проверить:

    console.log(String.prototype.toUpperCase !== undefined); // true
    

Почему это сделано именно так

  1. Примитивы остаются лёгкими и простыми

  2. Методы не дублируются для каждого значения

  3. Сохраняется единая модель прототипного наследования

Практический нюанс

Попытка записать свойство в строку не работает:

const str = "hi";
str.test = 123;

console.log(str.test); // undefined

Это происходит потому, что объект-обёртка временный и сразу уничтожается.

Вывод

Методы у строк появляются благодаря автоупаковке: примитив временно превращается в объект String, методы берутся из String.prototype, а затем объект исчезает.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

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

#primitive

#wrapper

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