Herencia diferencial en JavaScript

Introducción

La herencia diferencial es un modelo común orientado que usa el concepto de que la mayoría de los objetos están derivados de otros objetos más genéricos, y sólo difieren en algunos pequeños aspectos. Cada objeto mantiene una referencia a su prototipo y una tabla de propiedades que son difetentes.

Ejemplo

El siguiente código proporciona un método simple para heredar un objeto:

Object.prototype.inherit = function(){
  // Crea un nuevo objeto con este como su prototipo.
  var p = Object.create(this);

  /* Actualmente no es necesario:
  // Aplicar el constructor sobre el nuevo objeto.
  this.constructor.apply(p, arguments);
  */

  return p;
};

Usando inherit, es posible simplemente derivar objetos más específicos de un prototipo genérico. El es un ejemplo simple de creación de objetos cada vez más específicos utilizando el método de herencia y la herencia diferencial

var root = {}; // Puede ser un objeto con algún 
//objeto prototipo

var record = root.inherit();
record.toString = function(){ return "a Record"; };
 
var person = root.inherit();
person.firstName = false;
person.lastName = false;
person.toString = function(){ 
    return this.firstName ?
               (this.lastName ?
                   this.firstName + " " +this.lastName :
                   this.firstName) :
               (this.lastName ?
                   this.lastName :
                   "a Person");
};
 
JoePerson = person.inherit();
JoePerson.firstName = "Joe";
alert( JoePerson.toString() );

Ver también