1
resposta

[Sugestão] Adicionando uma propriedade dinâmica a um objeto em JavaScript

Boa tarde, colegas de estudo!

Gostaria de compartilhar uma observação relacionada à questão 2 do material, além de uma solução que pode ser útil. Estou estudando um pouco de Java e percebi que, salvo engano, não é possível atribuir uma nova propriedade a um objeto já instanciado nessa linguagem. Isso ocorre porque Java é uma linguagem mais rígida em relação a sua estrutura de objetos.

Por outro lado, em JavaScript, é possível adicionar dinamicamente propriedades ou métodos a objetos já criados. Pensando nisso, explorei como usar getters para criar uma propriedade dinâmica que utiliza outras propriedades do mesmo objeto. Nesse caso, aproveitei um getter para calcular o tempo de publicação de um livro, sem precisar definir essa propriedade diretamente no momento da criação do objeto.

No exemplo abaixo, a linha { livro.idadePublicação = anoAtual - livro.anoPublicacao; } está comentada porque a propriedade foi substituída pelo getter. Isso evita a necessidade de recalcular o valor manualmente e garante que ele sempre seja atualizado corretamente.

Segue o exemplo:

const anoAtual = new Date().getFullYear();

const livro = {
    titulo: 'Os botões de Napoleão',
    autor: ['Penny Le Couteur', 'Jay Burreson'],
    anoPublicacao: 2006,
    genero: 'Ciências',
    get tempoPublicacao() {
        return anoAtual - this.anoPublicacao;
    }
};

//livro.idadePublicação = anoAtual - livro.anoPublicacao;
const palavra = livro.tempoPublicacao > 1 ? 'anos' : 'ano';

const mostrarDetalhes = `Descrição
Título: ${livro.titulo}
Autor: ${livro.autor}
Ano de Publicação: ${livro.anoPublicacao}
Gênero: ${livro.genero}
Tempo de Publicação: ${livro.tempoPublicacao} ${palavra}`;

console.log(mostrarDetalhes);

Perceba que o getter tempoPublicacao calcula dinamicamente a diferença entre o ano atual e o ano de publicação do livro toda vez que é acessado. Isso é uma prática útil em JavaScript para situações como essa.

Imagino que conceitos semelhantes serão abordados no curso de orientação a objetos em Java, mas achei interessante trazer essa possibilidade para reflexão e discussão.

Espero que este exemplo seja útil para os colegas!

1 resposta

Olá, Robson! Tudo certo?

Que interessante a sua observação sobre a flexibilidade do JavaScript em relação à adição de propriedades dinâmicas em objetos! Realmente, essa é uma das características que torna o JavaScript uma linguagem tão versátil para desenvolvimento web.

No seu exemplo, você utilizou um getter para calcular dinamicamente a diferença entre o ano atual e o ano de publicação do livro, o que é uma ótima prática. Isso garante que a informação esteja sempre atualizada sem a necessidade de recalcular manualmente.

É uma abordagem muito útil, especialmente quando lidamos com dados que podem mudar ou precisam ser recalculados frequentemente.

Espero que continue com esse empenho nos estudos e caso precise de ajuda conte com a comunidade do fórum!