При доступе к свойствам строкового примитива JavaScript использует объектную семантику обёртки String; сама переменная остаётся примитивом.
Как работает обращение к свойству или методу строки, например `length`, если строка — примитив?
При доступе к свойствам строкового примитива JavaScript использует объектную семантику обёртки String; сама переменная остаётся примитивом.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
При доступе к свойствам строкового примитива JavaScript использует объектную семантику обёртки String; сама переменная остаётся примитивом.
Поэтому 'abc'.length возвращает 3, а методы находятся через String.prototype. Создавать new String() для этого не нужно. Присваивание собственного свойства примитиву не превращает строку в изменяемый объект: в strict mode оно может завершиться ошибкой, вне strict — не сохраниться.