5 Cosas que debes saber sobre el operador ‘delete’ en JavaScript

Javascript

Demo

En JavaScript existe el operador delete, el cual es utilizado para eliminar la propiedad de un objeto y después de eliminar la propiedad, esa propiedad ya no puede ser accesible y devuelve el valor undefined, pero hay otras cosas interesantes que es importante saber sobre el operador delete en JavaScript y en este Post te las comparto.  


Antes de continuar con este Post, te recomiendo escuchar el Podcast: “5 Consejos para ser un Programador más Productivo” (No son los clásicos consejos técnicos de programación, si no de rutinas y buenos hábitos cotidianos):
Spotify:

Sound Cloud:

Bien ahora continuemos con el Post: 5 Cosas que debes saber sobre el operador ‘delete’ en JavaScript.

Cuando se invoca al operador delete para eliminar una propiedad, JavaScript retorna true o caso contrario retorna false, esto solo es efectivo en las propiedades de un objeto y no tiene efecto en los nombres de variables o funciones.

El operador delete no debe ser utilizado en las propiedades de objetos predefinidos en JavaScript como window, Math y Date. Esto puede hacer que la aplicación funcione de manera inestable. Bien veamos a continuación algunos cosas sobre el operador delete.

Eliminar Propiedades de un objeto

La única manera para eliminar completamente las propiedades de un objeto en JavaScript es usando el operador delete:

Tras ejecutar el comando console.log(jugo) en la consola de comandos de Chrome Dev Tools, solo me devuelve nombre y stock, el precio se elimino.

Si la propiedad que se intenta eliminar no existe, el operador delete no tendrá ningún efecto y retornará true.

No podemos eliminar variables con la sentencia ‘var’

Mediante el operador delete se puede eliminar las propiedades de un objeto, pero no se pueden eliminar las propiedades declaradas con la sentencia var:

En el código anterior, al ejecutar el comando console.log(stock) en la consola de comandos de Chrome Dev Tools, me devuelve el valor de stock, ya que no se ha podido eliminar.

Y si declaro directamente la variable stock sin la sentencia var:

Al ejecutar el comando console.log(stock) en la consola de comandos de Chrome Dev Tools, me devuelve true, ya que elimine la variable stock exitosamente.

Eliminar valores de un matriz

Ya que las matrices en JavaScript son objetos, los elementos se pueden eliminar mediante el operador delete:

En el código anterior eliminé el 3er valor del array jugos, puedes ver que al imprimir el array jugos de diferentes maneras en la consola de comandos de Chrome Dev Tools, obtengo todos los datos, menos el 3er valor, es decir Jugo de Papaya, ya que este ha sido eliminado.

Para eliminar los elementos vacíos (empty, null, etc.) puedo ejecutar el siguiente código:

Con esto tengo solo obtengo los valores disponibles en el array jugos.

No podemos eliminar objetos integrados o predefinidos en JavaScript

No es seguro eliminar objetos predefinidos del Lenguaje de Programación Javascript como Math, Date y window, por ejemplo si intento eliminar el objeto predefinido Math:

Puede causar inestabilidad en mi aplicación, me devuelve Uncaught ReferenceError: Math is not defined.

No podemos eliminar propiedades no Configurables

Las propiedades de un objeto, ademas de los valores, tienen 3 atributos especiales:

  • writable: Es true si el valor se puede cambiar, caso contrario es de solo lectura.
  • enumerable: Es true si aparece en bucles, caso contrario no aparece.
  • configurable: Es true si la propiedad se puede eliminar o los atributos se pueden modificar, caso contrario no se puede cambiar.

Veamos el ejemplo a continuación:

En el código anterior utilizo el método Object.getOwnPropertyDescriptor() para obtener una descripción del valor precio con sus atributos especiales value, writable, enumerable y configurable.

Y si al valor precio le configuro su atributo configurable a false con el método Object.defineProperty(), al intentar eliminar el precio JavaScript no me dejará hacerlo:

En el código anterior al ejecutar el comando console.log(delete jugo.precio); me devuelve false, esto es porque le cambie el atributo configurable a false.

Y si le configuramos el modo estricto al código JavaScript:

Me devuelve el error: Cannot delete property ‘precio’ of #<Object>

Conclusión

En este Post hemos observado 5 situaciones en donde el operador delete puede funcionar o no puede funcionar. Es importante conocer esta información, ya que cuando desarrolles un proyecto con JavaScript, se pueden presentar algunos de los errores que hemos visto en este Post, cuando intentas eliminar una propiedad de un objeto.

Nota

  • Los métodos , propiedades, etc. expuestos en este Post pueden dejar de existir o continuar en futuras versiones de JavaScript, esto no depende de mi si no de los Desarrolladores que dan soporte a JavaScript.
  • No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo. 

 

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.  

Newsletter

Suscríbete a Nuestro Boletín de Novedades:

(Luego de la suscripción no te va salir ningun mensaje. Solo revisa tu bandeja de Correo para confirmar tu suscripción)
* indicates required

Comentarios

avatar
  Subscribirse  
Notificar a