4
respostas

class Pessoa

No código sobre classe do exercicio criei a classe Pessoa cmo no exercicio. usando o constructor vazio e o this como string vazia e chamando na variavel new Pessoa tambem vazio e chamados os nomes das variaveis separadamente o código funciona apresentando nome e sobrenome. mas quando alterei e pus dentro de new Pessoa as propriedades que quer chamar com novos nomes o console.log não entendeu retornando esata mensagem 06:54:52.097 01-exercicio1.js:12 nome Completo:undefined undefined por que isso aconteceu ? se dentro do contructor já tem as propriedades o console .log n ão deveria pegar estas informações

class Pessoa {
    constructor() {
        this.nome = '';
        this.sobrenome = '';
    }
}

var pessoa = new Pessoa('Joaquim' , 'Antônio');

console.log('nome Completo:' + Pessoa.nome + ' ' + Pessoa.sobrenome);

Obrigado

4 respostas

Oi Jorge, duas coisa. Faltou passar os argumento no constructor e tem que usar a variável pessoa que vc criou.

class Pessoa {
    constructor(nome, sobrenome) {
        this.nome = nome;
        this.sobrenome = sobrenome;
    }
}

var pessoa = new Pessoa('Joaquim' , 'Antônio');

console.log('nome Completo:' + pessoa.nome + ' ' + pessoa.sobrenome);

Oi Jorge!

Primeiro, vamos corrigir o erro do console.log(). Ele está ocorrendo porque você referenciou a classe Pessoa em vez do objeto pessoa.

console.log('nome Completo:' + Pessoa.nome + ' ' + Pessoa.sobrenome);

Deveria ser

console.log('nome Completo:' + pessoa.nome + ' ' + pessoa.sobrenome);

Porém da forma que seu código está, com construtor vazio, o resultado apresentado seria apenas

"nome Completo "

Pois o this.nome e this.sobrenome recebem uma string vazia ('') no construtor.

Normalmente quando criamos construtores vazios é porque não vamos passar nenhum parâmetro para ele. Como você quer passar um nome e sobrenome no construtor, é necessário declará-los como parâmetro no constructor da seguinte maneira:

class Pessoa {
    constructor(nome, sobrenome) {
        this.nome = nome;
        this.sobrenome = sobrenome;
    }
}

Desta forma quando executamos o comando

var pessoa = new Pessoa('Joaquim' , 'Antônio');

estamos criando um novo objeto chamado pessoa que tem uma propriedade nome com o valor "Joaquim" e sobrenome com valor "Antônio".

Com esta mudança, o comando

console.log('nome Completo:' + pessoa.nome + ' ' + pessoa.sobrenome);

deve retornar "nome Completo: Joaquim Antônio".

Espero ter ajudado! Qualquer outra dúvida pode postar aqui.

Bom dia, com as alterações que vocÊ falou , funcionou . obrigado

mas eu não poderia passar as informações através das variáveis declaradas fora de pessoa assim:

 class Pessoa {
    constructor() {
        this.nome ='';
        this.sobrenome = '';
        this.idade = '';
    }
}

var pessoa = new Pessoa();
    Pessoa.nome ='Joaquim';
    Pessoa.sobrenome='Claudio';
    Pessoa.idade = 30

console.log('nome Completo:' + pessoa.nome + ' ' + pessoa.sobrenome + ' ' + 'Idade :' + pessoa.idade);

desta maneira no console não aparece pq é obrigatório declarar no construtor ( nome, sobrenome, idade)? e no this também ?

Eu gostaria que as informações por exemplo viessem de um formulário a ser preenchido a estrutura será diferente ?

Obrigado

Bom dia novamente, só pra informar que acho que agora eu entendi melhor.

veja por favor se o raciocínio neste caso está de acordo.

Se na variável declarada, exemplo

var calopasita = new Calopsita( doroti, do Campo)

o que será escrito quando chamar console.log(calopsita)

será a informação que estiver entre os parenteses () no caso doroti , do campo

estes parenteses estejam vazios e houver uma outra declaração abaixo, será escrita a declaração seguinte exemplo.

var calopsita = new Calopsita();
calopsita.nome=Florinda

e comandar o console.log desta vez será escrito florinda do campo correto.

Obrigado