Prototipos en Javascript

El paradigma de programación orientado a objetos (POO) esta presente en la mayoría de lenguajes de programación, y javascript no es la excepción. Aunque para la gran parte  de lenguajes, la forma típica de manejar la orientación a objetos  es mediante clases, en el caso particular de javascript es mediante prototipos ( Aunque en la actualidad ya existan las clases, en el fondo la herencia en este lenguaje se sigue brindando de la misma manera).

Un prototipo en javascript es la forma en que se maneja la herencia en dicho lenguaje... un objeto hereda métodos y propiedades de otro objeto prototipo que actúa como una plantilla.

Definamos una función constructora


function Usuario(nombre, correo, nickname){
  //propiedades
  this.nombre   = nombre;
  this.correo   = correo;
  this.nickname = nickname;
}

Y así creamos un objeto...


let usuario1=new usuario("juan lópez","juan@correo.com","juanito");

Lógicamente nuestra función constructora también pude incluir métodos...


function Usuario(nombre, correo, nickname){
  //propiedades
  this.nombre   = nombre;
  this.correo   = correo;
  this.nickname = nickname;

  //metodos
  this.mePresento = function(){
    console.log(`Hola soy ${this.nombre}`);
  }
}

Pero es una mejor idea colgar los métodos directamente al prototipo y dejar en la función constructora solo las propiedades...


function Usuario(nombre, correo, nickname){
  //propiedades
  this.nombre   = nombre;
  this.correo   = correo;
  this.nickname = nickname;

}
//definimos los metodos directo en el prototipo
Usuario.prototipe.mePresento = function(){
    console.log(`Hola soy ${this.nombre}`);
  }