// Definimos la funcion constructora
function Gato(){
this.npatas=4
this.tienepelo=true;
}
// Creamos una instancia de la clase Gato
micifu = new Gato();
micifu
### Subclases
realmente son las rpopiedades de un mamifero. Aprovechamos para definir subclases
function Mamifero(name){
this.npatas=4
this.nombre=name
this.tienepelo=true;
}
Gato = function(name){
obj = new mamifero(name);
obj.especie= "gato"
return obj;
}
micifu = new Gato("micifu)
### Herencia
Si modificamos la clase superior, las instancias de las subclases heredan las propiedades
Mamifero=function(name){
this.npatas=4;
this.nombre= name;
this.tienepelo=true;
this.ponehuevos=false; // nueva propiedad
this.criastomanleche=true; // nueva propiedad
}
Micifu = new Gato("micifu") // la nueva instancia de gato hereda las nuevas propiedades de los mamiferos micifu
### Métodos
Cuando el valor de una propiedad es una funcion la llamamos Método y define un comportamiento
Mamifero =function(name){
this.npatas=4;
this.nombre= name;
this.tienepelo=true;
this.ponehuevos=false; // nueva propiedad
this.criastomanleche=true; // nueva propiedad
// metodos
this.saluda =function(){
console.log("hola soy "+this.nombre+" y soy un "+this.especie)
}
this.hazturuido = function(){
if(this.ruido) console.log(this.ruido+ " ... "+this.ruido);
}
}
Gato = function(name){
obj = new Mamifero(name);
obj.especie= "gato";
obj.ruido= "Miau";
return obj;
}
Micifu = new Gato("micifu");
Micifu.hazturuido();
Encadenando metodos
si el metodo devuelve mediante un "return this", puedo encadenarlos mediante el punto