Símbolo de JavaScript (con ejemplos)

En este tutorial, aprenderá sobre JavaScript Symbol con la ayuda de ejemplos.

Símbolo de JavaScript

El JavaScript ES6 introdujo un nuevo tipo de datos primitivo llamado Symbol. Los símbolos son inmutables (no se pueden cambiar) y son únicos. Por ejemplo,

 // two symbols with the same description const value1 = Symbol('hello'); const value2 = Symbol('hello'); console.log(value1 === value2); // false

Aunque value1 y value2 contienen la misma descripción, son diferentes.

Crear símbolo

Utiliza la Symbol()función para crear un Symbol. Por ejemplo,

 // creating symbol const x = Symbol() typeof x; // symbol

Puede pasar una cadena opcional como descripción. Por ejemplo,

 const x = Symbol('hey'); console.log(x); // Symbol(hey)

Descripción del símbolo de acceso

Para acceder a la descripción de un símbolo, usamos el .operador. Por ejemplo,

 const x = Symbol('hey'); console.log(x.description); // hey

Agregar símbolo como clave de objeto

Puede agregar símbolos como clave en un objeto usando corchetes (). Por ejemplo,

 let id = Symbol("id"); let person = ( name: "Jack", // adding symbol as a key (id): 123 // not "id": 123 ); console.log(person); // (name: "Jack", Symbol(id): 123)

Los símbolos no están incluidos en for … in Loop

El for… inbucle no itera sobre las propiedades simbólicas. Por ejemplo,

 let id = Symbol("id"); let person = ( name: "Jack", age: 25, (id): 12 ); // using for… in for (let key in person) ( console.log(key); )

Salida

 nombre Edad

Beneficio de usar símbolos en un objeto

Si se usa el mismo fragmento de código en varios programas, entonces es mejor usarlo Symbolsen la clave del objeto. Es porque puede usar el mismo nombre de clave en diferentes códigos y evitar problemas de duplicación. Por ejemplo,

 let person = ( name: "Jack" ); // creating Symbol let id = Symbol("id"); // adding symbol as a key person(id) = 12;

En el programa anterior, si el personobjeto también es utilizado por otro programa, entonces no querrá agregar una propiedad a la que otro programa pueda acceder o cambiar. Por lo tanto, al usar Symbol, crea una propiedad única que puede usar.

Ahora, si el otro programa también necesita usar una propiedad llamada id , simplemente agregue un símbolo llamado idy no habrá problemas de duplicación. Por ejemplo,

 let person = ( name: "Jack" ); let id = Symbol("id"); person(id) = "Another value";

En el programa anterior, incluso si se usa el mismo nombre para almacenar valores, el Symboltipo de datos tendrá un valor único.

En el programa anterior, si se usó la clave de cadena, entonces el programa posterior habría cambiado el valor de la propiedad. Por ejemplo,

 let person = ( name: "Jack" ); // using string as key person.id = 12; console.log(person.id); // 12 // Another program overwrites value person.id = 'Another value'; console.log(person.id); // Another value

En el programa anterior, el segundo user.idsobrescribe el valor anterior.

Métodos de símbolo

Hay varios métodos disponibles con Symbol.

Método Descripción
for() Busca símbolos existentes
keyFor() Devuelve una clave de símbolo compartida del registro de símbolos global.
toSource() Devuelve una cadena que contiene el origen del objeto Símbolo.
toString() Devuelve una cadena que contiene la descripción del símbolo.
valueOf() Devuelve el valor primitivo del objeto Symbol.

Ejemplo: métodos de símbolo

 // get symbol by name let sym = Symbol.for('hello'); let sym1 = Symbol.for('id'); // get name by symbol console.log( Symbol.keyFor(sym) ); // hello console.log( Symbol.keyFor(sym1) ); // id

Propiedades del símbolo

Propiedades Descripción
asyncIterator Devuelve el AsyncIterator predeterminado para un objeto
hasInstance Determina si un objeto constructor reconoce un objeto como su instancia
isConcatSpreadable Indica si un objeto debe acoplarse a sus elementos de matriz
iterator Devuelve el iterador predeterminado para un objeto.
match Partidos contra una cuerda
matchAll Devuelve un iterador que produce coincidencias de la expresión regular con una cadena.
replace Reemplaza subcadenas coincidentes de una cadena
search Devuelve el índice dentro de una cadena que coincide con la expresión regular.
split Divide una cadena en los índices que coinciden con una expresión regular
species Crea objetos derivados
toPrimitive Convierte un objeto en un valor primitivo
toStringTag Da la descripción predeterminada de un objeto
description Devuelve una cadena que contiene la descripción del símbolo.

Ejemplo: Ejemplo de propiedades de símbolo

 const x = Symbol('hey'); // description property console.log(x.description); // hey const stringArray = ('a', 'b', 'c'); const numberArray = (1, 2, 3); // isConcatSpreadable property numberArray(Symbol.isConcatSpreadable) = false; let result = stringArray.concat(numberArray); console.log(result); // ("a", "b", "c", (1, 2, 3))

Articulos interesantes...