Kế thừa nguyên mẫu là đơn giản. Nó có một lợi thế duy nhất so với mixins.
Đó là một liên kết trực tiếp. nếu bạn thay đổi nguyên mẫu, mọi thứ kế thừa nó sẽ được thay đổi.
Ví dụ sử dụng 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;
}
Về cơ bản, nếu bạn muốn các thay đổi đối với Vòng tròn "giao diện" phản ánh trong thời gian chạy tới tất cả các đối tượng "sử dụng" chức năng của nó, thì hãy kế thừa từ nó.
Nếu bạn không muốn thay đổi để phản ánh thì hãy trộn nó vào.
Lưu ý rằng mixins có nhiều mục đích hơn là tốt. Mixins là cơ chế của bạn cho nhiều "sự kế thừa".
Nếu bạn muốn một đối tượng triển khai nhiều "giao diện" thì bạn sẽ phải kết hợp một số. Cái mà bạn sử dụng để thừa kế nguyên mẫu là thứ bạn muốn thay đổi để phản ánh trong thời gian chạy, những cái khác sẽ được trộn lẫn vào.