คำตอบสั้น ๆ : __proto__เป็นการอ้างอิงถึงprototypeคุณสมบัติของตัวสร้างที่สร้างวัตถุ
วัตถุใน JavaScript
วัตถุ JavaScript เป็นชนิดในตัวสำหรับคอลเลกชันคุณสมบัติที่เป็นศูนย์หรือมากกว่า คุณสมบัติคือภาชนะที่เก็บวัตถุอื่น ๆ ค่าดั้งเดิมหรือฟังก์ชั่น
ตัวสร้างใน JavaScript
ฟังก์ชั่นเป็นวัตถุปกติ (ซึ่งนำมาใช้[[Call]]ในข้อกำหนด ECMA-262) ด้วยความสามารถเพิ่มเติมของการโทรออกได้ แต่มีบทบาทอื่นใน JavaScript: พวกเขากลายเป็นตัวสร้าง ( โรงงานสำหรับวัตถุ) หากเรียกใช้ผ่านnewดำเนินการ ตัวสร้างเป็นแบบอะนาล็อกคร่าวๆกับคลาสในภาษาอื่น
ทุกฟังก์ชั่นจาวาสคริปต์เป็นตัวอย่างของFunctionฟังก์ชั่นวัตถุในตัวที่มีคุณสมบัติพิเศษชื่อที่prototypeใช้ในการใช้การสืบทอดตามคุณสมบัติต้นแบบและคุณสมบัติที่ใช้ร่วมกัน ทุกวัตถุที่สร้างโดยฟังก์ชั่นคอนสตรัคเตอร์มีการอ้างอิงโดยนัย (เรียกว่าต้นแบบหรือ__proto__) กับค่าของคอนสตรัคprototypeเตอร์
นวกรรมิกprototypeเป็นแบบพิมพ์เขียวสำหรับการสร้างวัตถุเนื่องจากทุกวัตถุที่สร้างโดยนวกรรมิกได้รับการอ้างอิงถึงprototypeสำหรับการสร้างวัตถุตั้งแต่ทุกวัตถุที่สร้างขึ้นโดยคอนสตรัคสืบทอดการอ้างอิงถึงมัน
โซ่ต้นแบบ
ระบุวัตถุต้นแบบที่ผ่านคุณสมบัติภายในหรือ[[Prototype]] __proto__ความสัมพันธ์ต้นแบบระหว่างวัตถุสองชิ้นนั้นเกี่ยวกับการสืบทอด: ทุกวัตถุสามารถมีวัตถุอื่นเป็นต้นแบบ ต้นแบบอาจเป็นnullค่า
ห่วงโซ่ของวัตถุที่เชื่อมต่อกันด้วย__proto__คุณสมบัติที่เรียกว่าห่วงโซ่ต้นแบบ เมื่อทำการอ้างอิงไปยังคุณสมบัติในวัตถุการอ้างอิงนั้นจะเกิดขึ้นกับคุณสมบัติที่พบในวัตถุแรกในห่วงโซ่ต้นแบบที่มีคุณสมบัติของชื่อนั้น ต้นแบบลูกโซ่ทำงานเหมือนเป็นวัตถุชิ้นเดียว
ดูภาพนี้ (แยกจากบล็อกนี้):

เมื่อใดก็ตามที่คุณพยายามเข้าถึงทรัพย์สินในวัตถุ JavaScript เริ่มต้นการค้นหาสำหรับมันในวัตถุที่และยังคงมีต้นแบบของต้นแบบต้นแบบและอื่น ๆ จนทรัพย์สินที่จะพบหรือถ้าถือค่า__proto__null
การสืบทอดประเภทนี้โดยใช้ลูกโซ่ต้นแบบมักถูกเรียกว่าการมอบหมายเพื่อหลีกเลี่ยงความสับสนกับภาษาอื่น ๆ โดยใช้คลาสลูกโซ่
วัตถุเกือบทั้งหมดเป็นอินสแตนซ์ของObjectเนื่องจากObject.prototypeอยู่ในห่วงโซ่ต้นแบบของพวกเขา แต่Object.prototypeไม่ใช่ตัวอย่างObjectเนื่องจากObject.prototype.__proto__เก็บค่าnullไว้
คุณยังสามารถสร้างวัตถุด้วยnullต้นแบบดังนี้:
var dict = Object.create(null);
วัตถุดังกล่าวเป็นแผนที่ที่ดีกว่า (พจนานุกรม) มากกว่าวัตถุที่แท้จริงซึ่งเป็นเหตุผลที่ทำแบบนี้บางครั้งเรียกว่าDictรูปแบบ ( Dictพจนานุกรม)
หมายเหตุ: วัตถุที่สร้างขึ้นโดยใช้ตัวอักษร{}เป็นกรณีของObjectตั้งแต่มีการอ้างอิงถึง({}).__proto__Object.prototype