PROTOTIPOS
Para Svekis y van Putten[5] un prototipo es una propiedad creadora enganchada en los métodos de un objeto. "Cuando al crear una clase nada se ha especificado, la herencia se activa desde el prototipo object.prototype
". El prototipo tiene la mayor jerarquía de herencia.
En el ejemplo de abajo se creó una clase y un método con una condicional de validación; y luego se crearon –se instanciaron– dos objetos, uno que cumpla la condición y otro que no la cumpla. En este ejemplo el prototipo no está evidente.
// Se crea clase
class Encebollado {
// Se definen propiedades
constructor(pescado){
// Se definen valores de propiedades
this.pescado = pescado;
}
// Método de la clase
confirmar(){
if (this.pescado == "albacora"){
/* Sin este 'return' siempre se
mostrará un 'undefined' */
return "Es Encebollado";
} else {return "Eso NO es encebollado";}
}
} // Cierra clase
// Genera objetos
var platoUno = new Encebollado("albacora");
console.log(platoUno.confirmar());
//-> Es Encebollado
// Genera objetos
var platoDos = new Encebollado("chochos");
console.log(platoDos.confirmar());
//-> Eso NO es encebollado
Así mismo, luego de haber definido la clase con iniciales propiedades y métodos, es posible usar prototype
para luego agregar nuevas propiedades o métodos a la clase Encebollado. Y así finalmente invocar lo creado. En otras palabras, cada nuevo ingreso de propiedades o métodos desde prototype
influenciará en todas y cada una de las futuras instancias de objetos desde esa clase:
/* Se usa 'prototype' para agregar nuevo método
a la clase Encebollado */
Encebollado.prototype.nuevoMetodo = function(){
console.log("Rico encebollado de " + this.pescado);
};
/* Se usa 'prototype' para agregar nueva propiedad
a la clase Encebollado */
//clase.prototype.nuevaPropiedad = nuevoValor;
Encebollado.prototype.bebida= "jugo de naranja";
/* Se invoca a la clase Encebollado, pero
actualizada gracias al uso de 'prototype' */
var llamado = new Encebollado("albacora");
// Se invoca nueva propiedad
console.log("La bebida será de " + llamado.bebida);
//-> La bebida será de jugo de naranja
/* Se invoca al nuevo método agregado
al usar 'prototype' */
llamado.nuevoMetodo();
//-> Rico encebollado de albacora
Para Svekis y van Putten[5] "los métodos y propiedades definidos vía prototype
funcionarán como si hubieran sido definidos desde el inicio al crear la clase"
Subir al inicio Avanzar