Refactorización de código legacy en PHP: de la A a la Z para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

"La propiedad desapareció, pero el objeto permaneció": ¿cómo eliminar algo innecesario en JavaScript?

\n\n

Imagina una situación: estás trabajando con un objeto grande que llegó del servidor. Tiene 20 campos, pero solo se necesitan 15 para enviar un formulario. O estás escribiendo una función que debe devolver datos sin un campo de servicio _id. ¿Qué hacer? La pregunta más popular en Stack Overflow sobre este tema ha obtenido cientos de miles de visitas, y no es casualidad.

\n\n

Eliminar una propiedad de un objeto es una de esas tareas que parecen triviales pero esconden varias sorpresas. En este artículo, desglosaremos todas las formas principales de eliminar una propiedad de un objeto en JavaScript, compararemos su rendimiento y mutabilidad, y descubriremos qué enfoque elegir en 2025.

\n\n

Método #1: El operador delete — Un clásico

\n\n

La forma más obvia e históricamente primera es usar el operador delete. Elimina permanente e irrevocablemente una propiedad de un objeto.

\n\n
const user = {\n  name: 'Anna',\n  email: 'anna@example.com',\n  password: 'super_secret_123'\n};\n\ndelete user.password;\n\nconsole.log(user);\n// { name: 'Anna', email: 'anna@example.com' }\nconsole.log(user.password); // undefined\n
\n\n

¿Cómo funciona realmente delete?

\n\n

El operador delete no solo asigna undefined. Elimina completamente la propiedad del objeto. Puedes verificar esto usando el método hasOwnProperty:

\n\n
const car = { brand: 'Tesla' };\nconsole.log(car.hasOwnProperty('brand')); // true\n\ndelete car.brand;\nconsole.log(car.hasOwnProperty('brand')); // false\n
\n\n

Una diferencia importante: después de delete, la propiedad deja de existir. No aparecerá durante la iteración con for...in o Object.keys().

\n\n

¿Cuándo no funcionará delete?

\n\n

Hay varias "trampas":

\n\n
    \n
  • No puedes eliminar propiedades declaradas con var/let/const. El operador delete solo funciona con propiedades de objetos.
  • \n
  • Las propiedades heredadas del prototipo no se eliminan, solo las propiedades propias.
  • \n
  • Las propiedades con la bandera configurable: false (por ejemplo, en objetos integrados) no se eliminan. En modo estricto, esto generará un error.
  • \n
\n\n
// Ejemplo: una propiedad con configurable: false\nconst obj = {};\nObject.defineProperty(obj, 'fixed', {\n  value: 42,\n  configurable: false\n});\n\ndelete obj.fixed; // false (no eliminada)\nconsole.log(obj.fixed); // 42\n
\n\n

Método #2: Destructuración y el operador Rest — Un enfoque moderno

\n\n

Si trabajas con datos inmutables (y en JavaScript moderno esto se considera una buena práctica), entonces delete podría no ser la mejor opción, ya que muta el objeto original. Una alternativa es crear un nuevo objeto sin la propiedad no deseada usando destructuración:

\n\n
const user = {\n  name: 'Ivan',\n  email: 'ivan@example.com',\n  role: 'admin',\n  token: 'abc123'\n};\n\n// Elimina el campo token creando un nuevo objeto\nconst { token, ...userWithoutToken } = user;\n\nconsole.log(userWithoutToken);\n// { name: 'Ivan', email: 'ivan@example.com', role: 'admin' }\nconsole.log(user.token); // 'abc123' — ¡el objeto original no se modifica!\n
\n\n

Este enfoque es especialmente popular en el desarrollo con React, cuando necesitas pasar solo un subconjunto de props a un componente, excluyendo campos de servicio.

\n\n

Pros y Contras de la Destructuración

\n\n
    \n
  • + Inmutabilidad: el objeto original permanece sin cambios. Esto es importante para Redux, Vuex y la programación funcional.
  • \n
  • + Legibilidad: es visualmente claro qué campos estamos excluyendo.
  • \n
  • - Rendimiento: se crea una copia del objeto, lo que puede ser costoso para objetos grandes.
  • \n
  • - Incómodo para eliminar muchas propiedades: si necesitas eliminar 5 campos de 20,

Blogs

Book Recommendations