Agregar una función al prototipo
//las clases en JS son mas bien prototipos
function Persona(nombre, apellido, edad) {
this.nombre = nombre
this.apellido = apellido
this.edad = edad
}
//Agregar una función al prototipo
//lo llamamos por ejemplo adrian.saludar()
//no podemos hacer arrow functions en prototipo así
Persona.prototype.saludar = function () {
console.log(`Hola, me llamo ${this.nombre}`)
}
//new hace que se cree un nuevo objeto ya prototipado
var adrian = new Persona('Adrián', 'García', 25)
var dama= new Persona('Damáris', 'Soto', 22)
var neft = new Persona('Nefteradi', 'Luna', 1)

Herencia en prototipos
function heredaDe(hijo, padre){
var fn = function() {} //creamos una función vacia
fn.prototype = padre.prototype //en ella copiamos todo el prototipo del padre
hijo.prototype = new fn //el prototipo hijo es un objeto fn con el prototypo del padre
hijo.prototype.constructor = hijo
}
//Prototipo Padre
function Persona(nombre) {
this.nombre = nombre
}
Persona.prototype.saludar = function () {
console.log(`Hola, me llamo ${this.nombre}`)
}
//Prototipo Hijo
function Desarrollador(nombre){
this.nombre = nombre
}
Desarrollador.prototype.saludar = function () {
console.log(`Hola, me llamo ${this.nombre}`)
}
heredaDe(Desarrollador,Persona)
//new hace que se cree un nuevo objeto ya prototipado
var adrian = new Persona('Adrián')
var dama= new Desarrollador('Damáris')
var neft = new Persona('Nefteradi')