Objetos Envolventes em JavaScript

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 um number primitivo. Ao criar explicitamente um objeto Number, você pode manipular números como um number, mas geralmente é recomendado usar o tipo primitivo number.

typeof numObject é "object", mas typeof 42 é "number".

  • Esteja ciente de que usar o operador new para gerar um novo objeto wrapper produz um resultado diferente de chamar Number como uma função. Quando chamado como uma função, é retornado um number primitivo.

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 string primitiva. Ao usar um objeto String, você pode acessar propriedades e métodos de string, mas geralmente é utilizada uma string primitiva.

typeof strObject é "object", mas typeof "Hello" é "string".

  • Assim como Number, chamar String como uma função retorna uma string primitiva.

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 boolean primitivo. Você também pode criar explicitamente um objeto Boolean, mas geralmente é utilizado o tipo primitivo boolean.

typeof boolObject é "object", mas typeof true é "boolean".

  • Semelhante a Number, chamar Boolean como uma função retorna um boolean primitivo.

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 Object para criar um objeto wrapper para Symbol, mas geralmente, você usa o tipo primitivo Symbol diretamente.

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, undefined e symbol que não possuem métodos diretos.
  • Objetos Envoltórios: Objetos como Number, String e Boolean que 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.

YouTube Video