## 简介

差异化继承是基于原型编程的一个常见模型，它讲的是大部分的对象是从其他更一般的对象中派生而来的的，只是在一些很小的地方进行了修改。每个对象维护一个指向它们的 `prototype` 的引用和一个差异化属性列表。

## 示例

下面的代码为“继承”一个对象提供了简单的方法：

    Object.prototype.clone = function(){
      // 创建一个新的对象，并用 this 作为它的原型
      var p = Object.create(this);

      /* 并不是必须的:
      // 在新对象上应用构造函数
      this.constructor.apply(p, arguments);
      */

      return p;
    };

使用 `继承`, 它可以简便的从通用原型中派生出特殊对象。下面的例子使用了 `clone` 和差异化继承来建立不断增长的个性化对象。

    var root = {}; // Could be any object with any prototype object

    var record = root.clone();
    record.toString = function(){ return "a Record"; };

    var person = root.clone();
    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.clone();
    JoePerson.firstName = "Joe";
    alert( JoePerson.toString() );

## 相关链接

- Object.create
- inheritance and the prototype chain