Herencia en JavaScript
Mar 18, 2009 | Español | By Crysfel | 6 CommentsJavaScript tiene una forma única de crear objetos y realizar herencia entre ellos, a esta forma se le llama “prototypal inheritance”, básicamente un objeto puede heredar métodos y propiedades de otros objetos creando un prototipo para generar nuevos objetos.
La herencia de prototipo se realiza utilizando la propiedad “prototype” que se encuentra en todos los objetos. En JavaScript la herencia es simple pero con un poco de trabajo se puede obtener herencia múltiple; en este tema se muestra como realizar la herencia simple.
Es importante mencionar que la propiedad “prototype” sólo puede heredar de otros objetos y no de otros prototipos o funciones constructoras. A continuación se muestra un ejemplo para una mejor comprensión:
//Super "class"
var Animal = function(type){
this.type = type;
}
Animal.prototype.getType = function(){
return this.type;
}
var Dog = function(options){
this.breed = options.breed;
}
//Inheritance
Dog.prototype = new Animal('Dog');
//attach methods to the Dog "class"
Dog.prototype.run = function(){
console.debug('the '+this.breed+' '+this.type+' is running!');
}
//new instance
var beagle = new Dog({breed:'Beagle'});
//calling a method of the super "class"
console.debug(beagle.getType());
beagle.run();
La parte más importante del ejemplo anterior es donde se realiza la herencia, “Dog.prototype = new Animal(‘Dog’);”. La variable Dog hace referencia a la función constructora del objeto Dog, “new Animal()” está creando un objeto Animal el cual es asignado al prototipo de la función constructora del objeto “Dog”; de esta forma el objeto Dog contendrá todos los método y propiedades el objeto “Animal” cuando se creen nuevas instancias.
Conclusión
La herencia simple es algo que utilizaremos cuando desarrollemos componentes, es necesario que tengamos este concepto en mente.





Commercial ExtJs and Sencha Touch Themes


Hola que tal
Muy buena información es algo importante de explotar para generar aplicaciones web mas poderosas
saludos.