Objetos Envolventes em JavaScript
Este artigo explica sobre objetos envolventes em JavaScript.
YouTube Video
Objetos Wrapper
O JavaScript possui tipos primitivos e objetos para manipulá-los (objetos wrapper).
Tipos Primitivos
Tipos primitivos representam um único valor e são simples e leves. Esses são imutáveis (invariáveis) e não possuem diretamente métodos ou propriedades de objeto, mas podem ser temporariamente convertidos em objetos wrapper para operações.
string e number são exemplos de tipos primitivos. Por outro lado, objetos wrapper começam com uma letra maiúscula, como String e Number.
Objetos Envolventes
Para manipular tipos primitivos, o JavaScript gera temporariamente objetos wrapper (Object wrappers). Objetos wrapper contêm métodos e propriedades para os tipos primitivos.
Number
1let numObject = new Number(42); // Wrapper object
2
3console.log(typeof numObject); // object
4console.log(numObject.valueOf()); // 42
5
6let numValue = Number(42); // Return primitive value
7
8console.log(typeof numValue); // number
9console.log(numValue); // 42
Numberé um tipo de objeto que encapsula umnumberprimitivo. Ao criar explicitamente um objetoNumber, você pode manipular números como umnumber, mas geralmente é recomendado usar o tipo primitivonumber.
typeof numObjecté"object", mastypeof 42é"number".
- Esteja ciente de que usar o operador
newpara gerar um novo objeto wrapper produz um resultado diferente de chamarNumbercomo uma função. Quando chamado como uma função, é retornado umnumberprimitivo.
String
1let strObject = new String("Hello"); // Wrapper object
2
3console.log(typeof strObject); // object
4console.log(strObject.valueOf()); // Hello
- É um tipo de objeto que encapsula uma
stringprimitiva. Ao usar um objetoString, você pode acessar propriedades e métodos de string, mas geralmente é utilizada umastringprimitiva.
typeof strObjecté"object", mastypeof "Hello"é"string".
- Assim como
Number, chamarStringcomo uma função retorna umastringprimitiva.
Boolean
1let boolObject = new Boolean(true); // Wrapper object
2
3console.log(typeof boolObject); // object
4console.log(boolObject.valueOf()); // true
- É um tipo de objeto que encapsula um
booleanprimitivo. Você também pode criar explicitamente um objetoBoolean, mas geralmente é utilizado o tipo primitivoboolean.
typeof boolObjecté"object", mastypeof trueé"boolean".
- Semelhante a
Number, chamarBooleancomo uma função retorna umbooleanprimitivo.
BigInt
1let bigIntObject = Object(9007199254740991n); // Wrapper object
2
3console.log(typeof bigIntObject); // object
4console.log(bigIntObject.valueOf()); // 9007199254740991n
5
6let bigIntValue = BigInt(9007199254740991); // Return primitive BigInt
7
8console.log(typeof bigIntValue); // bigint
9console.log(bigIntValue); // 9007199254740991n
10
11// Error
12let bigIntObject2 = new BigInt(9007199254740991n);Objectを使ってBigIntのラッパーオブジェクトを生成できますが、通常はプリミティブ型のbigintを直接使うのが一般的です。
typeof bigIntObjectは"object"であるのに対し、typeof 9007199254740991nは"bigint"です。
BigIntを関数として呼び出すとプリミティブなbigintを返しますが、new演算子をつけてBigIntのラッパーオブジェクトを生成することはできません。
Symbol
1let symObject = Object(Symbol("id")); // Wrapper object for Symbol
2
3console.log(typeof symObject); // object
4console.log(symObject.valueOf()); //
- Você pode usar
Objectpara criar um objeto wrapper paraSymbol, mas geralmente, você usa o tipo primitivoSymboldiretamente.
Diferenças entre Tipos Primitivos e Objetos Wrapper
- Tipos primitivos são leves e eficientes em termos de memória, mas não possuem propriedades ou métodos diretos. No entanto, no JavaScript, mesmo com tipos primitivos, objetos wrapper temporários são criados automaticamente quando necessário para fornecer métodos e propriedades.
1let text = "Hello";
2
3// A temporary String object is created,
4// allowing access to the length property
5console.log(text.length);- Objetos wrapper são objetos gerados explicitamente que podem impactar a memória e o desempenho, por isso é geralmente recomendado usar tipos primitivos.
Conclusão
- Tipos Primitivos: Tipos leves como
number,string,boolean,null,undefinedesymbolque não possuem métodos diretos. - Objetos Envoltórios: Objetos como
Number,StringeBooleanque são temporariamente convertidos a partir de tipos primitivos.
Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.