แต่ละวัตถุในจาวาสคริปต์จะมีต้นแบบ ลอง:
การคัดลอกรหัสมีดังนี้:
var richard = new Object ();
การแจ้งเตือน (typeof (richard.prototype));
ผลที่ได้คือการหดหู่และสิ่งที่ปรากฏขึ้นพร้อมกับเบราว์เซอร์ที่ไม่ได้กำหนด ...
เกิดอะไรขึ้น?
ลองมาดูตัวอย่างอื่น:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น Richard () {}
การแจ้งเตือน (typeof (richard.prototype));
ตัวอย่างข้างต้นดูเหมือนว่าจะแสดงว่าวัตถุฟังก์ชันมีเพียงต้นแบบเท่านั้นในขณะที่วัตถุวัตถุทั่วไปไม่มีต้นแบบ ความจริงคืออะไร?
มาใช้ประโยคอื่นและเข้าใจ:
การคัดลอกรหัสมีดังนี้:
var richard = new Object ();
การแจ้งเตือน (Richard .__ Proto__);
คุณเข้าใจไหม
ในความเป็นจริงเราทุกคนมีความเข้าใจผิดซึ่งก็คือห่วงโซ่ต้นแบบของวัตถุจาวาสคริปต์เป็นคุณสมบัติที่ชื่อต้นแบบและสามารถเข้าถึงได้ ในความเป็นจริงต้นแบบของ JavaScript และแอตทริบิวต์ชื่อต้นแบบไม่มีความสัมพันธ์เลยในตอนแรกและเป็นสองสิ่งที่แตกต่างกัน
สำหรับวัตถุทั่วไปเราสามารถเข้าถึงต้นแบบที่สืบทอดมาจากวัตถุวัตถุผ่านคุณลักษณะเช่น __proto__;
สำหรับวัตถุฟังก์ชั่นเมื่อมีการจัดตั้งขึ้นต้นแบบของวัตถุฟังก์ชั่นได้รับการกำหนดให้กับคุณสมบัติต้นแบบ