Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dificuldade com notação de Objeto JS

Seguinte, tenho o código

this.nome = nome;

Eu sei que this se refere ao objeto da instância, mas eu não consigo entender por que depois do "=" eu repito a referência. Levando em consideração ali acima:

this.nome = nome <-- por que eu uso a mesma chamada duas vezes nesses casos de obj JS?

PS: Eu sei que funciona, mas quero entender o porquê de funcionar

3 respostas
solução!

Seu exemplo não esta completo, mas entendi sua dúvida eu acho.

this.nome é o atributo da instância e nome é o parâmetro de um método ou construtor (não é a mesma coisa que this.nome). Então, você pega o parâmetro e guarda como instância do objeto.

Isso é padrão em várias linguagens e não é exclusivo do js.

Era essa sua dúvida?

Para ficar ainda mais claro, veja um exemplo.

class Pessoa {
    constructor(nome) {
        // this é a variável de instância que vai guardar nome, que é o parâmetro passado para o construtor.
        this.nome = nome;
   }
}

let pessoa = new Pessoa('Flávio Almeida');
alert(pessoa.nome); // exibe Flávio Almeida

Consegue enxergar que nome é o parâmetro do construtor, uma maneira de passarmos uma informação para a instância da classe assim que é criada? Isso é a mesma coisa nos métodos.

Se você não tivesse feito this.nome você nunca conseguiria guardar na instância da classe o nome passado como parâmetro no construtor.

class Pessoa {
    constructor(nome) {
        this.nome = ''; // veja que não fiz nada com o parâmetro nome
   }
}

let pessoa = new Pessoa('Flávio Almeida');
alert(pessoa.nome); // exibe branco

Isso é meio que padrão em vários linguagens. Veja um código em php:

class MyClass {

  public $param;

  public function __construct($param) {
    $this->param = $param;
  }
}

Veja que $param foi recebido no construtor e que ele foi atribuído à $this->param. Sendo assim, mais uma vez, isso não é exclusividade do JavaScript. Se você domina outra linguagem orientada à objetos, o procedimento é similar.

Sim, era exatamente isso. Eu sabia que era necessário para funcionar, mas não tinha idéia de como funcionava em todas as linguagens que conheço.

Gosto de me aprofundar no que faço!

Depois dessa explicação, ficou tudo claro!

Muito obrigado!