Как методы появляются у примитива?
Основы языка
Методы появляются у примитива через временную объектную обёртку: при обращении к методу движок оборачивает примитив в объект-обёртку (String, Number, Boolean), вызывает метод и уничтожает обёртку.
Как это работает
Примитивы (string, number, boolean) сами по себе не имеют методов, но у них есть объектные обёртки (String, Number, Boolean). При вызове метода:
'hello'.toUpperCase();- Движок создаёт временный объект-обёртку
new String('hello'). - Вызывает метод обёртки (
toUpperCase). - Возвращает результат.
- Уничтожает обёртку.
Примитив остаётся примитивом — обёртка временная.
Обёртки
- String — методы строк (
toUpperCase,slice,includes). - Number — методы чисел (
toFixed,toString). - Boolean — обёртка для булевых.
- Symbol, BigInt — тоже имеют обёртки.
null и undefined обёрток не имеют — у них нет методов.
Прототип обёртки
Методы лежат в прототипе обёртки (String.prototype), и примитив «одалживает» их через временную обёртку:
'text'.length; // через String.prototype
String.prototype.custom = function () {}; // добавит метод всем строкамНюансы
Не путать примитив и объект-обёртку:
typeof 'text'; // 'string' (примитив)
typeof new String('text'); // 'object' (обёртка — не использовать явно)Коротко для собеседования
Методы у примитива появляются через временную объектную обёртку: при вызове метода движок оборачивает примитив (String/Number/Boolean), вызывает метод из прототипа обёртки и уничтожает её. Примитив остаётся примитивом. null/undefined обёрток не имеют. Явно new String() не используют (это объект, не примитив).