Вопрос проверяет понимание механизма автоупаковки примитивов в JavaScript и того, как примитивные значения временно оборачиваются в объекты-обертки для вызова методов.
В JavaScript примитивные типы данных (строки, числа, булевы значения, null, undefined, symbol, bigint) не являются объектами и не имеют собственных методов. Однако вы можете написать 'hello'.toUpperCase() и получить результат. Это возможно благодаря механизму автоупаковки (autoboxing).
Когда вы обращаетесь к свойству или методу примитива, JavaScript временно создает объект-обертку соответствующего типа: для строк — String, для чисел — Number, для булевых — Boolean. Затем вызывается метод на этом объекте, и после выполнения обертка уничтожается, возвращая примитивное значение.
let str = 'hello';
console.log(str.length); // 5
// JavaScript делает: new String('hello').length
let num = 42;
console.log(num.toFixed(2)); // '42.00'
// JavaScript делает: new Number(42).toFixed(2)
let bool = true;
console.log(bool.toString()); // 'true'
// JavaScript делает: new Boolean(true).toString()== может давать неожиданные результаты из-за приведения типов.Механизм автоупаковки делает работу с примитивами более удобной, позволяя использовать методы объектов без явного создания оберток. Это особенно полезно при манипуляциях со строками и числами в повседневном коде. Однако стоит помнить, что это временное преобразование, и не следует полагаться на объектные свойства примитивов для хранения данных.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию