Objetos Wrapper en JavaScript

Objetos Wrapper en JavaScript

Este artículo explica sobre los objetos envoltorios en JavaScript.

YouTube Video

Objetos Envoltorios

JavaScript tiene tipos primitivos y objetos para manejarlos (objetos envolventes).

Tipos Primitivos

Los tipos primitivos representan un valor único y son simples y ligeros. Estos son inmutables (inmutables) y no tienen directamente métodos o propiedades de objeto, pero pueden convertirse temporalmente en objetos contenedores para realizar operaciones.

string y number son ejemplos de tipos primitivos. Por otro lado, los objetos envolventes comienzan con una letra mayúscula, como String y Number.

Objetos Envoltorios

Para manipular tipos primitivos, JavaScript genera temporalmente objetos contenedores (Object). Los objetos contenedores contienen métodos y propiedades para los 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 es un tipo de objeto que envuelve un number primitivo. Al crear explícitamente un objeto Number, puedes manejar números como un number, pero generalmente se recomienda usar el tipo number primitivo.

typeof numObject es "object", pero typeof 42 es "number".

  • Ten en cuenta que usar el operador new para generar un nuevo objeto contenedor produce un resultado diferente al llamar a Number como una función. Cuando se llama como función, se devuelve un number primitivo.

String

1let strObject = new String("Hello"); // Wrapper object
2
3console.log(typeof strObject);    // object
4console.log(strObject.valueOf()); // Hello
  • Es un tipo de objeto que envuelve un string primitivo. Usando un objeto String, puedes acceder a las propiedades y métodos de las cadenas, pero generalmente se usa un string primitivo.

typeof strObject es "object", pero typeof "Hello" es "string".

  • Al igual que Number, llamar a String como una función devuelve un string primitivo.

Boolean

1let boolObject = new Boolean(true); // Wrapper object
2
3console.log(typeof boolObject);    // object
4console.log(boolObject.valueOf()); // true
  • Es un tipo de objeto que envuelve un boolean primitivo. También puedes crear explícitamente un objeto Boolean, pero generalmente se usa un tipo boolean primitivo.

typeof boolObject es "object", pero typeof true es "boolean".

  • Similar a Number, llamar a Boolean como una función devuelve un 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()); //
  • Puedes usar Object para crear un objeto envoltorio para Symbol, pero generalmente utilizas el tipo primitivo Symbol directamente.

Diferencias entre Tipos Primitivos y Objetos Envoltorios

  • Los tipos primitivos son ligeros y eficientes en memoria, pero no tienen propiedades ni métodos directos. Sin embargo, en JavaScript, incluso con tipos primitivos, se crean automáticamente objetos contenedores temporales cuando es necesario para proporcionar métodos y propiedades.
1let text = "Hello";
2
3// A temporary String object is created,
4// allowing access to the length property
5console.log(text.length);
  • Los objetos contenedores son objetos generados explícitamente que pueden afectar la memoria y el rendimiento, por lo que generalmente se recomienda usar tipos primitivos.

Conclusión

  • Tipos primitivos: Tipos ligeros como number, string, boolean, null, undefined y symbol que no tienen métodos directos.
  • Objetos envolventes: Objetos como Number, String y Boolean que se convierten temporalmente de tipos primitivos.

Puedes seguir el artículo anterior utilizando Visual Studio Code en nuestro canal de YouTube. Por favor, también revisa nuestro canal de YouTube.

YouTube Video