La Reflexión en JavaScript. ¿Qué es y para qué se usa?

La propiedad Prototype de un objeto en JavaScript
La propiedad Prototype de un objeto en JavaScript
18 de abril de 2023
Qué son las funciones en JavaScript
Qué son las funciones en JavaScript
2 de mayo de 2023
La propiedad Prototype de un objeto en JavaScript
La propiedad Prototype de un objeto en JavaScript
18 de abril de 2023
Qué son las funciones en JavaScript
Qué son las funciones en JavaScript
2 de mayo de 2023

Veamos qué es la reflexión en JavaScript. Ya hemos hablado previamente sobre los tipos de datos en JavaScript y como podemos hacer uso de la herencia a través de Prototype en JavaScript. Hoy vamos a amplicar un poco más el trato de los objetos en JavaScript a través de la reflexión.

¿Qué es la reflexión?

La reflexión nos permite examinar y modificar la estructura y el comportamiento de los objetos en tiempo de ejecución. Además, en JavaScript lo hacemos sin conocer previamente su estructura.

¿Por qué es necesaria la reflexión?

En JavaScritp no hay el concepto de clase con el que podemos construir tipos complejos y que podamos conocer su estructura en tiempo de compilación (si JavaScript se compilara). Entonces la reflexión nos permitirá examinar en tiempo de ejecución todos los objetos para validar si tiene o no una determinada propiedad y en función de ello actuar en consecuencia.

La reflexión, incluso nos permite modificar la estructura de los objetos en tiempos de ejecución, agregando o quitando propiedades al objetos. Podemos preguntar si tiene o no una determinada propiedad y si no la tiene, agregarla.

Funciones para usar reflexión

Alguna de las funciones que nos permiten hacer uso de la reflexión son:

  • Object.keys(objeto): devuelve un array con las propiedades enumerables, esto es, que se pueden iterar mediante un for, de un objeto.
  • Object.getOwnPropertyNames(objeto): devuelve un array con todas las propiedades (enumerables y no enumerables) de un objeto.
  • Object.getPrototypeOf(objeto): devuelve el prototipo del objeto.
  • Object.getOwnPropertyDescriptor(objeto, propiedad): devuelve un objeto que describe las características de una propiedad de un objeto, como su valor, si es enumerable, configurable (que se puede o no eliminar) y/o writable.
  • Object.getOwnPropertyDescriptors(objeto): devuelve un objeto que contiene todos los descriptores de propiedades del objeto.
  • Object.isExtensible(objeto): devuelve un valor booleano que indica si un objeto se puede extender con nuevas propiedades.
  • Object.preventExtensions(objeto): evita que se agreguen nuevas propiedades a un objeto.
  • Object.seal(objeto): previene la eliminación de propiedades y cambia las propiedades existentes a no configurables en un objeto.
  • Object.freeze(objeto): previene la eliminación y modificación de propiedades en un objeto.
  • typeof: devuelve una cadena que indica el tipo de un objeto (como «object», «function», «string», «number», etc.).
  • constructor: devuelve una referencia al constructor de un objeto.
  • hasOwnProperty(propiedad): devuelve un valor booleano que indica si un objeto tiene una propiedad con un nombre específico.
  • propertyIsEnumerable(propiedad): devuelve un valor booleano que indica si una propiedad específica de un objeto es enumerable.
  • isPrototypeOf(objeto): devuelve un valor booleano que indica si un objeto es el prototipo de otro objeto.

La reflexión es una de esas propiedades que usamos habitualmente sin saber que lo estamos haciendo. Ya sabes qué es la reflexion en JavaScript. Puedes aprender más en la sección de Desarrollo Web o en la sección de JavaScript.

¡Espero que te haya sido de utilidad!

Antonio J. Galisteo
Antonio J. Galisteo
Soy Antonio J. Galisteo. Ingeniero de software con amplia experiencia en desarrollo frontend, backend, aplicaciones móviles y de escritorio.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

La Reflexión en JavaScript. ¿Qué es y para qué se usa?
Este sitio web usa cookies para mejorar tu experiencia. Al navegar por este sitio aceptas nuestra Política de Protección de Datos.
Leer más