การถ่ายทอดทางพันธุกรรมเป็นเรื่องง่าย มันมีข้อได้เปรียบเดียวมากกว่ามิกซ์อิน
นั่นคือมันเป็นลิงค์สด ถ้าคุณเปลี่ยนต้นแบบทุกอย่างที่สืบทอดมันเปลี่ยนไป
ตัวอย่างการใช้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;
}
ดังนั้นโดยทั่วไปถ้าคุณต้องการเปลี่ยนแปลง "อินเตอร์เฟซ" วงกลมเพื่อสะท้อนเวลาทำงานกับวัตถุทั้งหมดที่ "ใช้" มันเป็นฟังก์ชั่นแล้วสืบทอดจากมัน
หากคุณไม่ต้องการให้มีการเปลี่ยนแปลงใด ๆ ให้ทำการผสมผสาน
โปรดทราบว่ามิกซ์อินมีจุดประสงค์มากกว่านั้นเช่นกัน Mixins เป็นกลไกของคุณสำหรับ "การสืบทอด" หลายรายการ
ถ้าคุณต้องการให้อ็อบเจกต์ใช้ "อินเตอร์เฟส" หลายอันคุณจะต้องผสมบางส่วนสิ่งที่คุณใช้สำหรับการสืบทอดต้นแบบเป็นสิ่งที่คุณต้องการให้การเปลี่ยนแปลงสะท้อนในขณะใช้งานส่วนอื่น ๆ จะผสมกัน