Warisan prototipe sederhana. Ini memiliki keunggulan tunggal dibandingkan mixin.
Itu adalah tautan langsung. jika Anda mengubah prototipe semua yang mewarisi itu diubah.
Contoh menggunakan 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;
}
Jadi pada dasarnya, jika Anda ingin perubahan pada "antarmuka" Lingkaran untuk mencerminkan pada saat dijalankan untuk semua objek yang "menggunakan" fungsinya, maka mewarisi darinya.
Jika Anda tidak ingin perubahan direfleksikan maka campurlah.
Perhatikan bahwa mixin memiliki tujuan lebih dari itu juga. Mixin adalah mekanisme Anda untuk beberapa "warisan".
Jika Anda ingin objek untuk mengimplementasikan beberapa "interface" maka Anda akan harus mencampur beberapa di. Yang Anda gunakan untuk warisan prototipikal adalah salah satu yang ingin perubahan untuk merefleksikan selama run-time, yang lain akan dicampur dalam.