Pare de pensar em classes!  Série - POO para JS

Pare de pensar em classes! Série - POO para JS

Tulio Faria
Tulio Faria25 de outubro de 2017
Nesta nova série do DevPleno, mostro como podemos passar de programação orientada-objetos para JavaScript mais funcional.
A primeira coisa (que é muito importante) é tentar parar de pensar estruturado.Se você quer mudar de programação orientada objetos para JavaSxript cada vez mais funcional funcional, precisa parar de pensar em classes. Apesar do JavaScript ter uma forma de criar classes,
por exemplo:

class Calc { constructor(num1, num2) { this.num1 = num1 this.num2 = num2 } out() { console.log(this.num1, this.num2) } } const a = new Calc(1, 2) a.out()

Devo utilizar?
Se você quer programar mais de uma maneira que faça sentido em JavaScript, você deve evitar. Vou mostrar algo que é bastante estranho principalmente para quem vem de Java, PHP, etc:

a.out.bind({ num: 4, num2: 5 })()

Então eu peguei o meu objeto 'a', o método out e dou um bind passando num1 e num2, com isso eu consigo sobrescrever um parâmetro que teoricamente estaria restrito a esse objeto.
Uma forma de construir sem utilizar o class seria assim:

const Calc = function (num1, num2) { this.num1 = num1 this.num2 = num2 return { out: function () { console.log(this.num1, this.num2) } } }

Mas eu consigo resolver isso de mutar o objeto, evitando por exemplo que o bind funcionasse? Toda function cria um contexto novo.
Para que isso não aconteça, podemos utilizar uma outra construção que não permita que façamos isso:

return { out: () => { console.log(this.num1, this.num2) } }

A partir de uma arrow function, não temos mais uma forma de sobrescrever o this. Assim eu evitei essa criação excessiva de contextos. Utilizando dessa forma, você vai perceber que ele parece muito uma classe mas existem vários conceitos de programação funcional que vão fazer muito sentido à medida que você for evoluindo.
Confira o video:
po9Ik_v5koU
Assistir vídeo
Curta o DevPleno no Facebook, se inscreva no canal no YouTube e cadastre seu e-mail para não perder as atualizações. Abraço!
Tulio Faria
Autor
Tulio Faria25 de outubro de 2017

Últimas do Blog