Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

115
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!