0
respostas

Prototypes e Objects: practicing

function estudante(nome, idade, curso) {
    this.nome =nome
    this.idade=idade
    this.curso =curso
}
var estudante = new estudante("Mateus", 32,"Javascript" );
console.log(estudante) 

Resultado: estudante { nome: 'Mateus', idade: 32, curso: 'Javascript' }

function Cliente (nome, cpf, email, saldo) {
    this.nome = nome
    this.cpf = cpf
    this.email = email
    this.saldo = saldo
    this.depositar = function(valor){
      this.saldo += valor
    }
   }
   const andre = new Cliente("Andre", "12312312312", "andre@email.com", 100) 

   function ClientePoupanca(nome, cpf, email, saldo, saldoPoup){
    Cliente.call(this, nome, cpf, email, saldo)
    this.saldoPoup = saldoPoup
   }

   const ju = new ClientePoupanca("Ju", "12312312312", "ju@email.com", 100, 200)  

ClientePoupanca.prototype.depositarPoup = function(valor){
 this.saldoPoup += valor
}

console.log('1 ' + andre.hasOwnProperty("saldo"))
console.log('2 ' + andre.hasOwnProperty("saldoPoup"))
console.log('3 ' + ju.hasOwnProperty("saldo"))
console.log('4 ' + ju.hasOwnProperty("saldoPoup"))
console.log('5 ' + (andre instanceof Cliente))
console.log('6 ' + typeof andre)
console.log('7 ' + typeof ju)
console.log('8 ' + (ju instanceof ClientePoupanca))
console.log('9 ' + Function.prototype.isPrototypeOf(Cliente))
console.log('10 ' + (Cliente.constructor === Function))

Resultado: 1 true 2 false 3 true 4 true 5 true 6 object 7 object 8 true 9 true 10 true

Trabalhando com Classes:

class Cliente {
    constructor(nome,email,cpf,saldo){
     this.nome = nome
     this.email = email
     this.cpf = cpf
     this.saldo = saldo
    }
    depositar(valor){
        this.saldo += valor
    }
    exibirSaldo(){
        console.log(this.saldo)
    }
}

var andre = new Cliente("Andre","andre@email.com","112233665544",100)

class ClientePoupanca extends Cliente {
    constructor(nome, email, cpf, saldo, saldoPoupanca){
      super(nome, email, cpf, saldo)
      this.saldoPoupanca = saldoPoupanca
    }

    depositarPoupanca(valor){
      this.saldoPoupanca += valor
    }
   }

var andre = new ClientePoupanca("Andre", "a@mail.com", "12312312312", 100, 200)


andre.exibirSaldo()
console.log(andre)

// andre.depositar(80)
// console.log(andre)

// andre.depositarPoupanca(75)
// console.log(andre)

Após os depósitos: ClientePoupanca { nome: 'Andre', email: 'a@mail.com', cpf: '12312312312', saldo: 180, saldoPoupanca: 275 }