Примитивные типы данных в JavaScript (строки, числа, булевы значения, Symbol, BigInt, null, undefined) на самом деле не имеют методов. Однако, когда мы пытаемся вызвать метод на примитивном значении, JavaScript временно оборачивает его в соответствующий объект-обертку (String, Number, Boolean, Symbol, BigInt).
Например, при вызове .toString() на строке 'hello', JavaScript создает временный объект new String('hello'), вызывает метод toString() этого объекта, а затем уничтожает временный объект. Этот механизм называется autoboxing или автоматическое упаковывание.
Типы данных null и undefined не имеют соответствующих объектов-оберток и поэтому не могут иметь методов. Попытка вызвать метод на null или undefined приведет к ошибке TypeError.