มีหลักการที่มีชื่อเสียงสำหรับการใช้รหัสซ้ำซึ่งเสนอโดย GOF: ลำดับความสำคัญใช้ในการใช้การรวมกันของวัตถุมากกว่าการสืบทอดคลาส ใน JavaScript ไม่มีแนวคิดของคลาสดังนั้นการใช้รหัสซ้ำไม่ จำกัด เฉพาะการสืบทอดในชั้นเรียน มีหลายวิธีในการสร้างวัตถุใน JavaScript รวมถึงตัวสร้างคุณสามารถใช้ใหม่เพื่อสร้างวัตถุและคุณสามารถปรับเปลี่ยนวัตถุแบบไดนามิก นอกจากนี้ยังมีวิธีการมากมายในการนำการสืบทอดการสืบทอดแบบไม่จำแนกประเภทมาใช้ซ้ำ (ซึ่งเรียกว่าโหมดการสืบทอดที่ทันสมัย) ใน JavaScript เช่นการรวมวัตถุอื่น ๆ เข้ากับวัตถุที่จำเป็นเทคโนโลยีการผสมวัตถุการยืมและวิธีการที่จำเป็น
โหมดการสืบทอดโหมดการสืบทอดแบบคลาสสิก
ตัวอย่างของผู้ก่อสร้างและเด็กสองคน:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชันพาเรนต์ (ชื่อ) {
this.name = name || "Adam";
-
parent.prototype.say = {
ส่งคืนสิ่งนี้ชื่อ;
-
ฟังก์ชั่นเด็ก (ชื่อ) {
-
สืบทอด (เด็กผู้ปกครอง);
ต่อไปนี้เป็นวิธีการใช้งานของฟังก์ชั่นการสืบทอด () ที่ใช้ซ้ำได้ ():
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นสืบทอด (c, p) {
C.prototype = ใหม่ p ();
-
ที่นี่คุณสมบัติต้นแบบควรชี้ไปที่วัตถุไม่ใช่ฟังก์ชั่นดังนั้นจึงต้องชี้ไปที่อินสแตนซ์ที่สร้างโดยตัวสร้างหลักไม่ใช่ตัวสร้างเอง
หลังจากนี้เมื่อสร้างวัตถุเด็กมันจะได้รับฟังก์ชั่นจากอินสแตนซ์หลักผ่านต้นแบบ:
การคัดลอกรหัสมีดังนี้:
var kid = เด็กใหม่ ();
kid.say (); // "อดัม"
เรียกห่วงโซ่ต้นแบบที่สืบทอดมา:
เพิ่มคุณสมบัติของเด็ก:
การคัดลอกรหัสมีดังนี้:
var kid = เด็กใหม่ ();
kid.name = "Patrick";
Kid.say (); // "Patrick"
การเปลี่ยนแปลงในห่วงโซ่ต้นแบบ:
คุณสามารถค้นหาชื่อในคุณสมบัติของวัตถุของคุณดังนั้นคุณไม่จำเป็นต้องมองหาห่วงโซ่ต้นแบบอีกต่อไป
หนึ่งในข้อเสียของการใช้รูปแบบข้างต้นคือมันสืบทอดคุณสมบัติของวัตถุสองวัตถุในเวลาเดียวกันคือคุณสมบัติที่เพิ่มเข้ามาในนี้และคุณสมบัติต้นแบบ ส่วนใหญ่ไม่จำเป็นต้องใช้คุณลักษณะเหล่านี้ของตัวเอง
ข้อเสียอีกประการหนึ่งคือการใช้มรดก () สืบทอด () มรดกไม่สนับสนุนพารามิเตอร์การส่งผ่านไปยังตัวสร้างย่อยเช่น:
การคัดลอกรหัสมีดังนี้:
var s = เด็กใหม่ ("seth");
s.say (); // "อดัม"
ผลลัพธ์นี้ไม่คาดว่า แม้ว่าตัวสร้างเด็กสามารถส่งพารามิเตอร์ไปยังตัวสร้างหลักได้ แต่กลไกการสืบทอดนี้จะต้องดำเนินการอีกครั้งทุกครั้งที่จำเป็นต้องใช้วัตถุเด็กและมันก็ไม่มีประสิทธิภาพเนื่องจากวัตถุแม่จะถูกสร้างขึ้นใหม่ในที่สุด
บทความนี้จบลงที่นี่ เราจะอัปเดตโหมดที่เหลือของโหมดการใช้รหัส JavaScript ซ้ำในอนาคต