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 unnumber
primitivo. Al crear explícitamente un objetoNumber
, puedes manejar números como unnumber
, pero generalmente se recomienda usar el tiponumber
primitivo.
typeof numObject
es"object"
, perotypeof 42
es"number"
.
- Ten en cuenta que usar el operador
new
para generar un nuevo objeto contenedor produce un resultado diferente al llamar aNumber
como una función. Cuando se llama como función, se devuelve unnumber
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 objetoString
, puedes acceder a las propiedades y métodos de las cadenas, pero generalmente se usa unstring
primitivo.
typeof strObject
es"object"
, perotypeof "Hello"
es"string"
.
- Al igual que
Number
, llamar aString
como una función devuelve unstring
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 objetoBoolean
, pero generalmente se usa un tipoboolean
primitivo.
typeof boolObject
es"object"
, perotypeof true
es"boolean"
.
- Similar a
Number
, llamar aBoolean
como una función devuelve unboolean
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 paraSymbol
, pero generalmente utilizas el tipo primitivoSymbol
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
ysymbol
que no tienen métodos directos. - Objetos envolventes: Objetos como
Number
,String
yBoolean
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.