JavaScriptProgramación

Descubre cómo usar Object.getOwnPropertySymbols() en JavaScript

Aprende a trabajar con símbolos y mejorar la seguridad de tus proyectos

La función Object.getOwnPropertySymbols() es una herramienta importante en el lenguaje de programación JavaScript que permite obtener los símbolos propios de un objeto. Los símbolos son valores únicos y privados que se pueden utilizar para proteger la seguridad y la confidencialidad de tus datos. Con esta función, puedes identificar y controlar fácilmente los símbolos en tu código.

Ejemplo 1: Guardar simbolos propios en un arreglo


const obj = {
  a: 1,
  b: 2,
};

const symbol1 = Symbol("symbol1");
const symbol2 = Symbol("symbol2");

Object.defineProperty(obj, symbol1, { value: 3 });
Object.defineProperty(obj, symbol2, { value: 4 });

const simbolosPropios = Object.getOwnPropertySymbols(obj);
console.log(simbolosPropios); // [Symbol(symbol1), Symbol(symbol2)]

Ejemplo 2: Comprobar si un objeto tiene un simbolo propio


const obj = {
  a: 1,
  b: 2,
};

const symbol1 = Symbol("symbol1");
Object.defineProperty(obj, symbol1, { value: 3 });

console.log(Object.hasOwnProperty(obj, symbol1)); // true

Ejemplo 3: Iterar sobre los simbolos propios de un objeto


const obj = {
  a: 1,
  b: 2,
};

const symbol1 = Symbol("symbol1");
const symbol2 = Symbol("symbol2");

Object.defineProperty(obj, symbol1, { value: 3 });
Object.defineProperty(obj, symbol2, { value: 4 });

for (const simbolo of Object.getOwnPropertySymbols(obj)) {
  console.log(simbolo); // Imprime cada símbolo propio en el objeto
}

Ejemplo 4: Crear un método privado para una clase


class MiClase {
  constructor() {
    const simbolo = Symbol("métodoPrivado");
    this[simbolo] = () => {
      console.log("Este es un método privado");
    };
  }
}

const instancia = new MiClase();
instancia[Symbol("métodoPrivado")](); // Imprime "Este es un método privado"

Ejemplo 5: Almacenar datos sensibles en un objeto


const datosSensibles = {
  contraseña: Symbol("contraseña"),
};

Object.defineProperty(datosSensibles, datosSensibles.contraseña, {
  value: "mypassword",
  configurable: false,
  writable: false,
});

console.log(datosSensibles[datosSensibles.contraseña]); // Imprime "mypassword"

Ejemplo 6: Compartir datos entre módulos de un aplicación


// Módulo A
const simboloCompartido = Symbol("simboloCompartido");
let valorCompartido = "valor inicial";

Object.defineProperty(window, simboloCompartido, {
  value: valorCompartido,
  configurable: false,
  writable: false,
});

// Módulo B
const valorActual = window[simboloCompartido];
console.log(valorActual); // Imprime "valor inicial"

// Módulo A
valorCompartido = "nuevo valor";

// Módulo B
console.log(window[simboloCompartido]); // Imprime "nuevo valor"

ArkkanarkkanEditar perfil

Conclusión

Utiliza Object.getOwnPropertySymbols() en tus proyectos para mejorar la seguridad y proteger tus datos privados. Asegúrate de entender su funcionamiento y aplicaciones específicas antes de implementarlo en tu código. Con el tiempo, podrás aprovechar al máximo sus beneficios y desarrollar aplicaciones más seguras y eficientes.

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.