
คำแนะนำที่เกี่ยวข้อง: บทช่วยสอน JavaScript
(แนวคิด) Chain ต้นแบบหมายถึงรายการที่เชื่อมโยงที่ประกอบด้วยต้นแบบบางส่วนผ่านตัวชี้ __proto__ ห่วงโซ่ต้นแบบสามารถให้บริการอ็อบเจ็กต์ที่ต้องการแบ่งปันข้อมูลในห่วงโซ่ต้นแบบและถูกนำมาใช้ เพื่อใช้กลไกการสืบทอด JavaScript
(ตัวชี้ลูกโซ่ต้นแบบ) ตัวชี้ที่เกี่ยวข้องในลูกโซ่ต้นแบบ:
ฟังก์ชัน A() {
-
ให้ a1 = A() ใหม่
ให้ a2 = A() ใหม่
ให้ a3 = A() ใหม่
// บรรทัดโค้ดเหล่านี้จะสร้างห่วงโซ่ต้นแบบที่แสดงด้านล่าง 
ให้ A = {
ทดสอบ: ""
-
ให้ a1 = Object.create(A)
ให้ a2 = Object.create(A)
ให้ a3 = Object.create(A)
// บรรทัดโค้ดเหล่านี้สอดคล้องกับเชนต้นแบบที่แสดงด้านล่าง 
ฟังก์ชัน A() {
-
ให้ a1 = A() ใหม่
ให้ a2 = A() ใหม่
ให้ a3 = A() ใหม่
// บรรทัดโค้ดเหล่านี้จะสร้างห่วงโซ่ต้นแบบที่แสดงด้านล่าง 
โซ่ต้นแบบที่เกี่ยวข้องกับการสืบทอดสามารถวิเคราะห์ได้โดยใช้แผนภาพแบบง่าย
// ใช้โหมดการรวมปรสิตเพื่อใช้ฟังก์ชันที่สืบทอดมา C() {}
ฟังก์ชัน B() {}
B.ต้นแบบ = ใหม่ C()
ฟังก์ชัน ก() {}
A.ต้นแบบ = ใหม่ B()
ให้ a1 = A() ใหม่
ให้ a2 = A() ใหม่
ให้ a3 = A() ใหม่ 
ของห่วงโซ่ต้นแบบ จุดสิ้นสุดของห่วงโซ่ต้นแบบเป็นโมฆะ ซึ่งไม่ได้อ้างอิงถึงวัตถุต้นแบบ
ไดนามิกของต้นแบบได้รับการอธิบายโดยละเอียดใน "การเขียนโปรแกรมเชิงวัตถุ" และส่วนใหญ่จะเกี่ยวข้องกับการเขียนใหม่และดัดแปลงต้นแบบ นี่เป็นตัวอย่างบางส่วน
ตัวอย่างที่ 1—ต้นแบบ Dynamics
var A = function() {};
A.ต้นแบบ.n = 1;
var b = A ใหม่();
A.ต้นแบบ = {
น: 2,
ม: 3
-
var c = A ใหม่();
console.log(bn); // 1
console.log(bm); // ไม่ได้กำหนด
console.log(cn); // 2
console.log(cm); // 3 ตัวอย่างที่ 2 - พลวัตของห่วงโซ่ต้นแบบและห่วงโซ่ด้านล่าง
var F = function() {};
Object.prototype.a = ฟังก์ชั่น () {
console.log('a');
-
Function.prototype.b = ฟังก์ชั่น() {
console.log('b');
-
var f = F ใหม่ ();
ฟ้า(); //ก
fb(); // ไม่มีแอตทริบิวต์ b อยู่ Fa();
Fb(); // bอ้างถึงรูปภาพแรกใน "Prototype Chain Diagram Not Involving Inheritance" ที่กล่าวถึงข้างต้น คุณสามารถวาดปัญหาการวิเคราะห์ไดอะแกรมอ้างอิงแบบง่ายต่อไปนี้ได้ 
ตัวอย่างที่ 3 — Prototype Dynamics & Prototype Chain Bottom Chain
Function บุคคล (ชื่อ) {
this.name=ชื่อ
-
ให้ p = บุคคลใหม่ ('ทอม');
console.log(p.__proto__) // Person.prototype
console.log (Person.__proto__) // Function.prototype ตัวอย่างที่ 4 — Prototype Dynamics & Prototype Chain Bottom Chain
var foo = {}, F = function(){};
Object.prototype.a = 'ค่า a';
Function.prototype.b = 'ค่า b';
วัตถุ.ต้นแบบ = {
เป็น: "มูลค่า"
-
Function.ต้นแบบ = {
ข: "ค่าข"
-
console.log(foo.a); // ค่า
console.log(foo.b); // ไม่ได้กำหนด
console.log(Fa); // ค่า
console.log(Fb); // value b อ้างถึงรูปภาพแรกใน "Prototype Chain Diagram Not Involving Inheritance" ที่กล่าวถึงข้างต้นเพื่อวาดปัญหาการวิเคราะห์ไดอะแกรมอ้างอิงแบบง่ายต่อไปนี้ เนื่องจาก foo และ F ผูกต้นแบบของพวกเขาเมื่อมีการประกาศ พวกเขาจะได้รับที่อยู่ของต้นแบบที่เก็บไว้ในหน่วยความจำฮีปผ่านตัวชี้ที่เก็บไว้ในหน่วยความจำสแต็ก ขั้นแรก ต้นแบบได้รับการแก้ไข การดำเนินการแก้ไขจะแก้ไขต้นแบบบนหน่วยความจำฮีป foo และ F ยังคงสามารถเข้าถึงผลลัพธ์ที่แก้ไขผ่านตัวชี้ของหน่วยความจำสแต็ก ขั้นตอนที่สองคือการเขียนต้นแบบใหม่ JS คือ "การดำเนินการถ่ายโอนค่า" ทั้งหมด หลังจากเขียนต้นแบบใหม่แล้ว ให้เปิดพื้นที่ใหม่ในหน่วยความจำฮีปเพื่อจัดเก็บต้นแบบใหม่ จากนั้นเปิดพื้นที่ใหม่ในหน่วยความจำสแต็ก เพื่อจัดเก็บตัวชี้ไปยังหน่วยความจำฮีป ในขณะนี้ เนื่องจากพอยน์เตอร์หน่วยความจำสแต็กที่ foo และ F ถืออยู่นั้นแตกต่างจากพอยน์เตอร์หน่วยความจำสแต็กใหม่ foo และ F ไม่สามารถเข้าถึงต้นแบบที่เขียนใหม่ได้ 
คำแนะนำที่เกี่ยวข้อง: บทช่วยสอนการเรียนรู้ JavaScript
ข้างต้นเป็นคำอธิบายโดยละเอียดของห่วงโซ่ต้นแบบ JavaScript พร้อมรูปภาพและข้อความ สำหรับข้อมูลเพิ่มเติม โปรดใส่ใจกับบทความอื่น ๆ ที่เกี่ยวข้องบนเว็บไซต์ภาษาจีน PHP