Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Почему нельзя сохранить свойство в строке как в объекте?

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

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

Строки в JavaScript — примитивы, они не могут иметь собственные свойства. При попытке присвоить свойство строке, JavaScript временно оборачивает её в объект-обёртку String, присваивает свойство, но затем обёртка уничтожается, и свойство теряется. В строгом режиме это вызовет ошибку.

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

Почему строки не могут хранить свойства как объекты?

В JavaScript строки относятся к примитивным типам данных. Примитивы — это неизменяемые (immutable) значения, которые не имеют собственных методов или свойств. Когда вы пытаетесь обратиться к свойству строки или присвоить его, JavaScript создаёт временную объектную обёртку (например, String), выполняет операцию, а затем уничтожает эту обёртку. Поэтому присвоенное свойство не сохраняется.

Пример кода

let str = 'hello';
str.foo = 'bar';
console.log(str.foo); // undefined

// В строгом режиме будет ошибка
'use strict';
let str2 = 'world';
str2.bar = 'baz'; // TypeError: Cannot create property on primitive value

Как это работает

  • Примитивы (строка, число, boolean, null, undefined, symbol, bigint) хранятся по значению, а не по ссылке.
  • Объекты (включая массивы, функции) хранятся по ссылке и могут иметь динамические свойства.
  • Автоупаковка (autoboxing) — временное превращение примитива в объект для доступа к методам (например, str.length), но это не сохраняет изменения.

Вывод

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    3

  • Сложность:

    2

Навыки

  • JavaScript

    JavaScript

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

#primitive

#object

#autoboxing

#immutable

#wrapper

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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