Как работает механизм, когда у примитива (например, строки) можно вызвать методы, хотя у примитива не должно быть методов?

При доступе к свойству примитива JavaScript использует поведение соответствующей объектной обёртки, поэтому у строки доступны методы String.prototype.

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

Что ответить на собеседовании

При доступе к свойству примитива JavaScript использует поведение соответствующей объектной обёртки, поэтому у строки доступны методы String.prototype.

Подробный разбор

Ответ с пояснениями

При доступе к свойству примитива JavaScript использует поведение соответствующей объектной обёртки, поэтому у строки доступны методы String.prototype.

Например, 'hello'.toUpperCase() работает без превращения самой переменной в постоянный объект String. Добавленное примитиву свойство не становится устойчивым состоянием. Null и undefined — исключение: обычный доступ к их свойствам вызывает TypeError.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее