Die prototypische Vererbung ist einfach. Es hat einen einzigen Vorteil gegenüber Mixins.
Das heißt, es ist eine Live-Verbindung. Wenn Sie den Prototyp ändern, wird alles, was er erbt, geändert.
Beispiel mit 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;
}
Wenn Sie also Änderungen am "Interface" -Kreis zur Laufzeit für alle Objekte vornehmen möchten, die dessen Funktionalität "nutzen", übernehmen Sie diese.
Wenn Sie nicht möchten, dass Änderungen übernommen werden, mischen Sie sie ein.
Beachten Sie, dass Mixins auch mehr Zweck haben. Mixins sind Ihr Mechanismus für die mehrfache "Vererbung".
Wenn Sie ein Objekt wollen mehrere „Schnittstellen“ implementieren , dann Sie werden in einigen mischen müssen. Die Sie für prototypische Vererbung ist , die Sie Änderungen während der Laufzeit reflektieren wollen, werden die anderen in gemischt werden.