Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

122
Vistas
Tres enfoques diferentes para la encapsulación de funciones

Estoy acostumbrado a usar una class para agrupar funciones y datos comunes dentro de un contenedor central. Sin embargo, con javascript parece que hay varias formas de hacer esto, y al mirar el código, veo que a menudo se usa un enfoque que no es de clase con bastante frecuencia.

Por ejemplo, si tomamos el siguiente código de juguete para hacer algunos cálculos (y permitir el encadenamiento de métodos), aquí hay tres variaciones que a veces puedo ver:

 // object approach const MathObject = { num: undefined, setNum(x) {this.num = x; return this;}, square(x) {this.num *= this.num; return this}, print() {console.log(this.num); ; return this}, } let m=Object.create(MathObject); m.setNum(2).square().print() // Response to the comment below -- can uncomment to test // let diff_1 = Object.create(MathObject).setNum(2).square() // let diff_2 = Object.create(MathObject).setNum(5).square() // diff_1.print(), diff_2.print() // let same_1 = MathObject.setNum(2).square() // let same_2 = MathObject.setNum(5).square() // same_1.print(), same_2.print()

 // function approach function MathFunction() { let num; return { square(x) {this.num *= this.num; return this}, setNum(x) {this.num = x; return this;}, square(x) {this.num *= this.num; return this}, print() {console.log(this.num); ; return this}, } } let a = MathFunction() a.setNum(2).square().print();

 // class approach class MathClass { num; constructor(x) {this.num = x; /*ignored for now*/ } setNum(x) {this.num = x; return this} square(x) {this.num *= this.num; return this} print() {console.log(this.num);return this;} } m = new MathClass(); m.setNum(2).square().print()

¿Es este un resumen preciso de las formas más comunes en javascript en las que se encapsulan los datos y los métodos? ¿Y hay alguna razón para no usar una clase (aparte de mantener el estilo en un proyecto anterior)?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda