En lenguajes orientados a objetos tenemos herencia basada en clases y en JavaScript tenemos herencia basada en prototipos. De esta forma vamos a poder escribir código más reutilizable y más escalable.
Todos los objetos en JavaScript descienden de Object y tienen un prototipo asociado, todos los objetos que compartan un mismo prototipo van a heredar sus propiedades y métodos.
Vamos a ver algunas de las opciones que tenemos para prototipos según de la forma como creamos un objeto.