Вопрос проверяет понимание механизма автоупаковки примитивов в JavaScript и того, как работают методы на примитивных типах.
В JavaScript примитивные типы данных, такие как строки, числа и булевы значения, не являются объектами и не имеют собственных методов. Однако вы можете вызывать методы на них, например 'hello'.toUpperCase(). Это возможно благодаря механизму, который называется автоупаковка (autoboxing).
Когда вы обращаетесь к свойству или методу примитива, JavaScript временно создает объект-обертку соответствующего типа (String, Number, Boolean). Затем вызывается нужный метод, после чего объект-обертка уничтожается. Примитив остается неизменным.
let str = 'hello';
console.log(str.length); // 5
// Внутренне происходит:
// let temp = new String('hello');
// console.log(temp.length);
// temp = null;let name = 'John';
let upperName = name.toUpperCase();
console.log(upperName); // 'JOHN'
console.log(name); // 'John' - оригинал не изменилсяАвтоупаковка — это удобный механизм JavaScript, который позволяет работать с примитивами как с объектами без потери производительности. Его стоит понимать для корректной работы с методами примитивов и избежания неожиданного поведения при присвоении свойств.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию