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')