typestar

Mantener los datos inmutables en JavaScript

Copia, no mutes — y sabe qué tan profundo llega la copia.

const state = {
  lang: "javascript",
  runs: [104, 98],
  meta: { updated: "2026-07-30" },
};

const shallow = { ...state, runs: [...state.runs, 91] };
shallow.meta.updated = "changed"; // compartido con state
console.log(state.meta.updated, shallow.runs);

const deep = structuredClone(state);
deep.meta.updated = "isolated";
console.log(state.meta.updated, deep.meta.updated);

const frozen = Object.freeze({ nested: { a: 1 } });
frozen.nested.a = 2; // permitido: freeze es superficial
console.log(Object.isFrozen(frozen), frozen.nested.a);

Cómo funciona

  1. El spread y los métodos to* copian un nivel.
  2. structuredClone copia en profundidad, Maps y Dates incluidos.
  3. Object.freeze frena las escrituras, pero solo en el nivel superior.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
538
Tokens
147
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 80 segundos.

Escribe este fragmento

Paso 4 de 4 en Objetos por dentro; paso 15 de 16 en Funciones y patrones.

← Anterior Siguiente →