$cat~/glossario/autoboxing.md

Autoboxing

JavaScript

Envolvimento temporário de primitivo em objeto wrapper para chamar métodos.

autoboxing.mdmarkdown
01

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.

02

seção

Exemplo

snippetJavaScript
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); // false

Primitivo vs wrapper String — autoboxing é temporário, new String() persiste objeto

03

seção

Modo de uso

  • Entender por que literais têm métodos de prototype

  • Evitar new String/Number/Boolean em código novo

  • Debugar comparações === entre API JSON e objetos wrapper

  • Ler stack traces que mencionam String.prototype

04

seção

Armadilhas comuns

  • Achar que .trim() muta a string original

  • Usar wrapper object onde primitivo é esperado (Map key, Set)

05

seção

Termos relacionados