プロトタイプの継承は簡単です。これには、ミックスインよりも1つの利点があります。
それはライブリンクだということです。プロトタイプを変更すると、プロトタイプを継承するすべてが変更されます。
pdを使用した例
var Circle = {
constructor: function _constructor() {
this.radius = 0;
return this;
},
area: function _area() {
return this.radius * this.radius * Circle.PI
},
PI: 3.14
};
var mixedIn = pd.extend({}, Circle).constructor();
var inherited = pd.make(Circle, {}).constructor();
Circle.perimeter = perimeter;
inherited.perimeter(); // wins
mixedIn.perimeter(); // fails
function perimeter() {
return 2 * this.radius;
}
そのため、基本的に、「インターフェイス」サークルへの変更を、その機能を「使用する」すべてのオブジェクトに実行時に反映させたい場合は、継承します。
変更を反映させたくない場合は、混ぜてください。
ミックスインにはそれ以上の目的があることに注意してください。ミックスインは、複数の「継承」のメカニズムです。
オブジェクトに複数の「インターフェース」を実装させる場合は、いくつかを混在させる必要があります。プロトタイプ継承に使用するものは、実行時に変更を反映させたいもので、その他は混在させます。