DEV Community

Jose Juarez Junior
Jose Juarez Junior

Posted on

JavaScript | Dados e funcionalidades

Dados e funcionalidades

Em JavaScript podemos criar funções:

/* Area de um triângulo retângulo */
function getTriangleArea(a, b) {
    return (a * b) /2;
}

/* Hipotenusa de um triângulo retângulo */
function getTriangleHypotenuse(a, b) {
    return Math.sqrt(a ** 2 + b ** 2);
}
Enter fullscreen mode Exit fullscreen mode

No console do navegador:

getTriangleArea(3,4) // retorna 6
getTriangleHypotenuse(3,4) // retorna 5
Enter fullscreen mode Exit fullscreen mode

Agora imagine que tivéssemos dez, vinte funções para triângulo. Ficaria confuso manter o controle de todas essas funções diferentes e todos os valores de retorno.
O que podemos fazer é combinar nossos dados com nossas funções em um objeto.

let myTri = {
    a: 3,
    b: 4,
    getArea: function() {
        return (this.a + this.b) / 2;
    },
    getHypotenuse: function() {
        return Math.sqrt(this.a ** 2 + this.b ** 2);
    },
};
Enter fullscreen mode Exit fullscreen mode

Nesse objeto estamos armazenando tanto valores (a e b) como funções (getArea e getHypotenuse), que tecnicamente aqui chamamos de métodos, que na verdade são funções que residem dentro de um objeto.
Veja que usamos a palavra chave "this", para acessar algo dentro do objeto. Nesse contexto, o "this" aqui se refere a esse objeto especificamente.

No console do navegador:

myTrib.a // retorna 3
myTrib.b // retorna 4
myTrib.getArea() // retorna 3.5
myTrib.getHypotenuse() // retorna 5
Enter fullscreen mode Exit fullscreen mode

Porém nesse momento, eu não consigo reutilizar o código. Para triângulos diferentes, preciso criar objetos diferentes.

Portato usando POJO

  • Ajuda muito a combinação de dados e funcionalidade.
  • É limpo: funcionalidade relacionada vive junta.

  • É um problema quando temos mais de um triângulo. Pois:
    É difícil de manter
    Se tivermos mil triângulos, teremos mil cópias dessas funções, o que seria um desperdício de memória, espaço e tempo para escrever!

É nesse problema que entram as classes. Assunto da próxima postagem.

Top comments (0)