SYMBOL EN JAVASCRIPT: QUÉ ES Y CÓMO UTILIZARLO
En JavaScript, Symbol es un tipo de dato primitivo y se utiliza para crear identificadores únicos. A continuación, te explico todo lo esencial sobre Symbol en JavaScript: Symbol es compatible con todos los navegadores modernos (Chrome, Firefox, Safari, Edge) desde 2015, son valores primitivos y no pueden ser modificados una vez creados y cada vez que se crea un Symbol, se obtiene un valor único, incluso si los símbolos tienen la misma descripción. Ejemplo:const sym1 = Symbol();
const sym2 = Symbol("descripcion");
const sym3 = Symbol("descripcion");
console.log(sym2 === sym3); // false (son únicos)
Métodos y Propiedades de Symbol
- Symbol.for(key): Busca o crea un Symbol en un registro global usando una clave (key). Si el Symbol ya existe para esa clave, lo devuelve.
const sym1 = Symbol.for("app");
const sym2 = Symbol.for("app");
console.log(sym1 === sym2); // true (comparten la misma clave)
- Symbol.keyFor(symbol): Devuelve la clave de un Symbol registrado con Symbol.for. Para símbolos no registrados, devuelve "undefined".
const sym = Symbol.for("app");
console.log(Symbol.keyFor(sym)); // "app"
const sym2 = Symbol("local");
console.log(Symbol.keyFor(sym2)); // undefined
Consideraciones
- No Convertibles a Cadenas Automáticamente: Intentar concatenar un Symbol con una cadena (ej. "hola" + sym) lanza un error. Hay que usar "sym.toString()" o "sym.description".
- Acceso a Símbolos: Se puede obtener todas las propiedades Symbol de un objeto con "Object.getOwnPropertySymbols()".
- No Son Verdaderamente Privados: Aunque los Symbol son difíciles de acceder sin la referencia, herramientas como "Object.getOwnPropertySymbols()" pueden exponerlos.
const sym1 = Symbol.for("app");
const sym2 = Symbol.for("app");
console.log(sym1 === sym2); // true (comparten la misma clave)
const sym = Symbol.for("app");
console.log(Symbol.keyFor(sym)); // "app"
const sym2 = Symbol("local");
console.log(Symbol.keyFor(sym2)); // undefined
- No Convertibles a Cadenas Automáticamente: Intentar concatenar un Symbol con una cadena (ej. "hola" + sym) lanza un error. Hay que usar "sym.toString()" o "sym.description".
- Acceso a Símbolos: Se puede obtener todas las propiedades Symbol de un objeto con "Object.getOwnPropertySymbols()".
- No Son Verdaderamente Privados: Aunque los Symbol son difíciles de acceder sin la referencia, herramientas como "Object.getOwnPropertySymbols()" pueden exponerlos.