prototypes para henry

Esencialmente todas las clases son Prototipos

class Persona {
  constructor(nombre,apellido,edad){
    this.nombre = nombre
    this.apellido = apellido
	  this.edad = edad
  }
  saludar(){
		//variables dentro de metodos

		//1
    console.log(`Hola, me llamo ${this.nombre} ${this.apellido}`)
		
		//2
		var nombre = this.nombre
		var apellido = this.apellido
    console.log(`Hola, me llamo ${nombre} ${apellido}`)

		//3
		var { nombre, apellido } = this
    console.log(`Hola, me llamo ${nombre} ${apellido}`)
  }
}
//Es una receta de cocina
class Persona {
  constructor(nombre,apellido,edad){
    this.nombre = nombre
    this.apellido = apellido
	  this.edad = edad
  }
  saludar(){
	
    console.log(`Hola, me llamo ${this.nombre}`)
  }
  soyViejo(){
    console.log(`${(this.edad < VEJEZ ? (`Toi jovenaz@`):(`Toi chavorruc@`))}`)
  }
}

class Desarrollador extends Persona{
  constructor(nombre,apellido,edad){
    super(nombre, apellido,edad)
  }
  saludar(){
    console.log(`Hola, me llamo ${this.nombre} y soy dev`)
  }
}

//new hace que se cree un nuevo objeto ya prototipado
//se llaman escribiendo el nombre del objeto adrian
//los atributos se llaman con objeto.atributo adrian.nombre
//las funciones se llaman con objeto.funcion() adrian.saludar()
var adrian = new Persona('Adrián', 'García', 25)
var dama= new Desarrollador('Damáris', 'Soto', 22)
var neft = new Persona('Nefteradi', 'Luna', 1)

Recuerda que puedes mandar valores como parámetro

class Persona {
      constructor(nombre,apellido,edad){
        this.nombre = nombre
        this.apellido = apellido
    	  this.edad = edad
      }
      saluda(fn){
				//Hola me llamo Adrian y soy dev
        console.log(`Hola, me llamo ${this.nombre} y soy dev`)
				//Adrian envio un 'hola'
        fn && console.log(`${this.nombre} envio un '${fn}'`)
      }
    }

//declaramos el objeto con su clase
var adrian = new Persona('Adrián', 'García', 25)

//llamamos al objeto con su atributo-funcion y le mandamos un hola
adrian.saluda('hola')

Herencia de clasess

/**
class es la nueva clase
extends es la clase de la que hereda
constructor es donde se manejan las props y la inicializacion de parametros de la clase
	tambien es el metodo que corre por defecto al crear una clase
super es el manejador del constructor de la clase heredada
*/
class Desarrollador extends Persona{
      constructor(nombre,apellido,edad){
        super(nombre, apellido, edad)
      }
      saluda(fn){ //METODO
        var {nombre, apellido} = this
        console.log(`Hola, me llamo ${nombre} y soy dev`)
        fn && fn(nombre,apellido,true)
      }
    }
    
const responder = (nombre, apellido, esDev) => {
      console.log(`Buen día, ${nombre} ${apellido}`)
      esDev && console.log(`Me parece genial que seas Dev`)
    }

var dama= new Desarrollador('Damáris', 'Soto', 22)
dama.saluda(responder)