Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

124
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda