При доступе к свойству примитива JavaScript использует поведение соответствующей объектной обёртки, поэтому у строки доступны методы String.prototype.
Как работает механизм, когда у примитива (например, строки) можно вызвать методы, хотя у примитива не должно быть методов?
При доступе к свойству примитива JavaScript использует поведение соответствующей объектной обёртки, поэтому у строки доступны методы String.prototype.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
При доступе к свойству примитива JavaScript использует поведение соответствующей объектной обёртки, поэтому у строки доступны методы String.prototype.
Например, 'hello'.toUpperCase() работает без превращения самой переменной в постоянный объект String. Добавленное примитиву свойство не становится устойчивым состоянием. Null и undefined — исключение: обычный доступ к их свойствам вызывает TypeError.