Прототипне успадкування просте. Він має єдину перевагу перед міксинами.
Це означає, що це пряма посилання. якщо змінити прототип, все, що його успадковує, буде змінено.
Приклад з використанням 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;
}
Отже, якщо ви хочете, щоб зміни в "інтерфейсному" колі відображалися під час виконання всіх об'єктів, які "використовують" його функціональність, то успадковуйте його.
Якщо ви не хочете, щоб зміни відображалися, змішайте їх.
Зауважте, що міксини мають і більшу мету. Міксини - ваш механізм багаторазового «успадкування».
Якщо ви хочете, щоб об'єкт для реалізації кілька «інтерфейсів» , то ви будете повинні змішувати деякі в. Той , який ви використовуєте для прототипу спадкування є той , який ви хочете зміни , щоб відобразити на час виконання, інші будуть змішані в.