Entendiendo los Objetos en JavaScript

Yeison Daza 🍉
Apr 3, 2016 · 3 min read

Los objetos son, una de las características menos entendidas en JavaScript, dado que su implementación tiene algunas diferencias importantes con muchos lenguajes de programación más tradicionales.

Vayamos paso a paso, intentando entenderlos.

Nota: Este contenido lo publiqué primero en mi newsletter, la semana después de publicar el newsletter publico en mi blog, si quieres ser el primero en leer suscríbete.

En palabras simples:

Los objetos son una colección de propiedades

Para construir objetos podemos hacerlo de dos maneras,

  • Objetos declarativos o literales: podemos crear objetos sin necesidad de un constructor o instanciar una clase, para esto solo declaramos el objeto y sus propiedades.
  • Objetos construidos: JavaScript es un lenguaje libre de clases, pero tenemos el keyword new, el cual nos permite crear un nuevo objeto, de esta manera podemos utilizar una función que cumpla el rol del constructor.

JavaScript no almacena el contenido de las propiedades dentro de los objetos, este solo guarda el nombre de las propiedades, con referencias a donde están almacenados los valores.

Para acceder a las propiedades tenemos dos opciones

  • notación con .
  • notación con []

Cada una de las propiedades tiene 4 atributos, los cuales son

  • value
  • configurable
  • enumerable
  • writable

Para poder ver los atributos usamos Object.getOwnPropertyDescriptor(target, propiedad)

Sabiendo esto podremos ver nuestro objetos representados como

Para setear nuevas propiedades con atributos personalizados utilizamos Object.defineProperty(myObj, propiedad, {atributos})

Veamos cada uno de estos atributos y entendamos mejor a que hacen referencia.

Nos permite definir si el valor de una propiedad va a poder ser modificado o no.

Nos permite definir si los atributos de la propiedad van a poder ser modificados.

Controla si la propiedad va a ser mostrada cuando se enumeren las propiedades del objeto, como usando for..in

  • Object.preventExtensions(objeto) recibe un objeto y retorna un objeto al cual no se pueden agregar nuevas propiedades.
  • Object.seal(objeto) recibe un objeto y retorna un objeto al cual no se le pueden agregar propiedades, ni configurar las existentes
  • Object.freeze(Objeto) recibe un objeto y retorna uno al cual, no se puede agregar propiedades, modificarlas, o sobrescribir las actuales

Los objetos en JavaScript son entidades dinámicas que se pueden modificar en cualquier punto, esto aunque es una característica poderosa, no siempre la vamos a querer.

Aplicando los métodos que anteriores vamos a poder llegar a tener objetos inmutables, pero si tuviéramos otros objetos como propiedades, estos no aplican esta inmutabilidad, podríamos crear una función recursiva, que vuelva todas las propiedades de nuestros objetos inmutables o utilizas librerías como immutable.js .


Entendiendo JavaScript

Artículos semanales sobre JavaScript, aprende no solo las…

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store