Проверяет понимание механизма автоупаковки (autoboxing) в JavaScript, благодаря которому примитивы могут использовать методы объектов-обёрток.
В JavaScript существует два вида значений: примитивы (string, number, boolean, null, undefined, symbol, bigint) и объекты. У примитивов нет собственных свойств и методов, однако на практике мы спокойно пишем "hello".toUpperCase() или (42).toString(2). Это возможно благодаря механизму автоупаковки (autoboxing), который движок применяет автоматически.
Когда вы обращаетесь к свойству или методу примитива, движок выполняет следующие шаги:
new String("hello"), new Number(42), new Boolean(true).Исходная переменная при этом остаётся примитивом — никакой мутации не происходит.
const s = "hello";
console.log(s.toUpperCase()); // "HELLO"
console.log(typeof s); // "string"
// Эквивалент того, что делает движок:
const tmp = new String(s);
const result = tmp.toUpperCase();
tmp = null; // временный объект удаляется
console.log(result); // "HELLO"
s.foo = 1; s.foo; // undefined.String.prototype, Number.prototype, Boolean.prototype.new String(...)) считается антипаттерном: typeof new String("a") === "object", что ломает сравнения и логику.Итог: автоупаковка — это синтаксический сахар, позволяющий работать с примитивами так, будто они объекты. Понимание этого механизма помогает избегать ловушек с typeof, сравнениями и случайным созданием объектов-обёрток.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию