Programación Orientada a Objetos: Patrón Módulo y Clases de JS

Ana Martínez Aguilar
2 min readApr 27, 2018

--

Los módulos en JS son pequeñas unidades de código independientes y reutilizables. Su principal ventaja es que ayudan al mantenimiento del código puesto que son independientes y consiguen que haya menos variables globales, además de ser reutilizables.

El Patrón Módulo se utiliza en JS para imitar el concepto de Clases de otros lenguajes y poder almacenar tanto métodos públicos como privados y las variables que están dentro de un solo objeto. Desde la implementación de ECMAScript 6 (ES6) de JavaScript ya se pueden utilizar Clases en este lenguaje. Por ello, veremos cómo es el Patrón Módulo y las Clases, puesto que ambos persiguen lo mismo: la Programación Orientada a Objetos.

Hay varias maneras de utilizar un patrón módulo y veremos una de ellas con el siguiente ejemplo. La siguiente función, a partir de un valor dado (initialScore), suma 1 a ese valor.

function createObject(initialScore) {
let accumulator = initialScore;
return {
addOnePoint: function () { ++accumulator; },
showScore: function () { return accumulator; }
};}var obj = createObject(0);
obj.addOnePoint();
obj.showScore();
//devuelve 1

¿Qué estamos haciendo?

  • Creamos la función createObject, a la que le pasamos el valor inicial de la suma a través de un parámetro.
  • En el return de la función, escribimos el objeto con las propiedades que queremos incluir.
  • La propiedad addOnePoint guarda una función (sumar 1).
  • La propiedad showScore guarda otra función, que realiza una acción (devuelve el resultado de esa suma).

Este ejemplo lo podemos hacer también a través de una Clase:

class Score {
constructor(accumulator) {
this.accumulator = accumulator;
}
addOnePoint() { ++this.accumulator; } showScore() { return this.accumulator; }}const scoreClass = new Score(0);
scoreClass.addOnePoint();
scoreClass.showScore();
//devuelve 1

Las funciones que aplican Patrón Módulo y las Clases permiten más funcionalidades. Por ejemplo, las Clases permiten crear instancias, que son objetos de la Clase a la que hacen referencia y con ellas podemos compartir métodos y atributos de la Clase pero además declarar otros propios.

Este artículo explica el Patrón Módulo ampliamente y aquí puedes visitar la MDN sobre Clases de JS.

--

--