Autoboxing
JavaScript
Envolvimento temporário de primitivo em objeto wrapper para chamar métodos.
seção
Explicação
Quando você chama 'abc'.toUpperCase(), o motor JS não transforma a variável em objeto permanentemente. Ele cria um wrapper temporário (new String('abc')), invoca o método na instância e descarta o wrapper.
Primitivos string, number, boolean, symbol e bigint permanecem imutáveis e por valor. O autoboxing explica por que métodos existem em literais — mas typeof continua reportando o primitivo. new String("x") cria objeto mutável (evite).
Comparar typeof 'a' // 'string' com typeof new String('a') // 'object'. Wrapper e primitivo com mesmo conteúdo falham em === porque tipos diferem. Isso conecta autoboxing a immutability e typeof.
seção
Exemplo
const s = 'hello';s.toUpperCase(); // 'HELLO'console.log(typeof s); // 'string' const wrapped = new String('hello');console.log(typeof wrapped); // 'object'console.log(s === wrapped); // falsePrimitivo vs wrapper String — autoboxing é temporário, new String() persiste objeto
seção
Modo de uso
Entender por que literais têm métodos de prototype
Evitar
new String/Number/Booleanem código novoDebugar comparações === entre API JSON e objetos wrapper
Ler stack traces que mencionam String.prototype
seção
Armadilhas comuns
Achar que
.trim()muta a string originalUsar wrapper object onde primitivo é esperado (Map key, Set)
seção
Termos relacionados
Aprofundar no artigo
Quer ir além? Este artigo explora o tema em profundidade — leitura recomendada após o glossário.
Primitive Types: Os 7 Blocos de Construção do JavaScript
Os 7 tipos primitivos do JavaScript — imutabilidade, typeof, autoboxing e os quirks que todo desenvolvedor precisa conhecer.
ler artigoMais em JavaScript
Outros termos da mesma categoria para revisão em sequência.