イントロダクション

差分継承は、ほとんどのオブジェクトが他のより汎用的なオブジェクトから派生し、いくつかの小さな側面でのみ異なるという概念を用いる一般的なプロトタイプ指向のモデルです。それぞれのオブジェクトは、そのプロトタイプとそれぞれ異なるプロパティのテーブルへの参照を保持します。

次のコードはオブジェクトを継承するシンプルなメソッドを提供します:

Object.prototype.inherit = function(){
  // Create a new object with this as its prototype
  var p = Object.create(this);

  /* actually not necessary:
  // Apply the constructor on the new object
  this.constructor.apply(p, arguments);
  */

  return p;
};

inherit を使用して、汎用的なプロトタイプからより特定のオブジェクトを簡単に作成できるようになります。次のコードは inherit メソッドと差分継承を用いて、より特定のオブジェクトを作成するシンプルな例です。

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

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() );

関連項目

ドキュメントのタグと貢献者

タグ: 
このページの貢献者: YuichiNukiyama
最終更新者: YuichiNukiyama,