1
resposta

[Dúvida] Return com ou sem #

Não consegui entender a diferença do return com ou sem o #.

Não estaríamos retornando a mesma coisa em ambas as situações, já que o 'getter propriedade() {}' retorna justamente a 'this.#propriedade'?

Obrigado.

get nome() {
        return this.#nome;
    }

//  ExibirInfos() declarado sem os # nas this.propriedades

exibirInfos() {
        return `${this.nome} , ${this.email}, ${this.nascimento}, ${this.role}, ${this.ativo}`
    }
1 resposta

Olá, Daniel! Tudo bem?

A cerquilha (#) é usada para denotar propriedades privadas numa classe em JavaScript. Quando você vê this.#nome, isso significa que a propriedade nome é privada e só pode ser acessada diretamente dentro da própria classe.

No seu exemplo, o método get nome() está acessando essa propriedade privada e retornando seu valor. Isso é comum quando queremos permitir leitura de uma propriedade privada de fora da classe, mas mantendo o controle sobre como essa propriedade é exposta.

get nome() {
    return this.#nome;
}

Por outro lado, quando você usa this.nome em métodos como exibirInfos(), você não está acessando diretamente a propriedade privada, mas sim o método getter get nome(). Isso é uma prática de encapsulamento, onde o acesso à propriedade privada é controlado pelo método getter, que pode incluir lógicas adicionais, como validações ou transformações dos dados antes de retorná-los.

exibirInfos() {
    return `${this.nome}, ${this.email}, ${this.nascimento}, ${this.role}, ${this.ativo}`
}

Portanto, embora this.#nome e this.nome possam parecer que retornam o mesmo, o uso de this.nome é uma forma de acessar a propriedade privada de maneira controlada através do getter. Isso é especialmente útil quando você quer implementar regras ou lógicas específicas que devem ser aplicadas toda vez que a propriedade é acessada.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software