คัดลอกรหัสรหัสดังนี้:
<mce: สคริปต์ประเภท = "ข้อความ/javascript"> <!-
-
แต่ละอินสแตนซ์ของวัตถุมีต้นแบบ (ต้นแบบ) ที่สมาชิกแอตทริบิวต์ใช้เพื่อชี้ไปที่อินสแตนซ์ของวัตถุ (เรียกว่าวัตถุแม่ชั่วคราว)
เราชี้ความสัมพันธ์ระหว่างต้นแบบของพ่อเป็น [ต้นแบบลูกโซ่ต้นแบบ Chian]
ต้นแบบยังมีพ่อ -ในกฎหมายเพราะมันมักจะเป็นอินสแตนซ์ของวัตถุเว้นแต่เราจะเปลี่ยนเป็นการส่วนตัว
ใน JavaScript "ทุกอย่างเป็นวัตถุฟังก์ชั่นเป็นประเภทแรก"
ฟังก์ชั่นและวัตถุเป็นอินสแตนซ์ของฟังก์ชั่น
ต้นแบบของพ่อของฟังก์ชั่นชี้ไปที่ต้นแบบของฟังก์ชั่น, ฟังก์ชั่นต้นแบบของพ่อของ Prototype เป็นวัตถุ
ต้นแบบหลักของวัตถุยังชี้ไปที่ต้นแบบของฟังก์ชัน
ในเครื่องยนต์ Spidermonkey สามารถเข้าถึงต้นแบบหลักได้ผ่าน __proto__
-
function.prototype.hi = function () {alert ('hi function');}
Object.prototype.hi = function () {Alert ('Hi Object');}
var a = function () {
this.txt = "a";
-
A.prototype = {
พูดว่า: function () {Alert ('A');}
-
การแจ้งเตือน (ฟังก์ชั่นอินสแตนซ์ของ);
การแจ้งเตือน (a .__ loto___ === function.prototype);
การแจ้งเตือน (ฟังก์ชันอินสแตนซ์ของวัตถุ);
การแจ้งเตือน (ฟังก์ชั่น .__ loto__ === fu conction.prototype);
Alert (function.prototype .__ loto__ === Object.prototype);
การแจ้งเตือน (Object .__ Proto__ === function.prototype);
Alert (Object.prototype .__ Loto __);
การแจ้งเตือน (A.Prototype Instance ของวัตถุ);
การแจ้งเตือน (a.prototype .__ loto__ === object.prototype);
var a = function () {};
a.prototype = new a ();
A.prototype.say = function () {
การแจ้งเตือน ('A');
-
การแจ้งเตือน (ฟังก์ชั่นอินสแตนซ์ของ);
การแจ้งเตือน (a .__ propo___ === function.prototype);
การแจ้งเตือน (A.Prototype Instance ของ A);
การแจ้งเตือน (a.prototype .__ loto__ === a.prototype);
var ia = new a ();
var ib = new a ();
ia.hi ();
-
IA เองไม่มีวิธีการสวัสดี (ไม่มีในโครงสร้างและฉันไม่ได้กำหนดไว้)
ดังนั้นมองหา ia .__ proto__ นั่นคือ a.prototype และไม่พบมัน
ดังนั้นมองหา a.prototype .__ loto__ นั่นคือ a.prototype และฉันยังไม่พบมัน
ค้นหา A.prototype .___ loto__ ต่อไปนั่นคือ Object.prototype ว้าวฉันพบสวัสดีดังนั้นฉันจึงโทรหามันและหยุดมองหา
เอาท์พุท: วัตถุสวัสดี
-
ib.hi ();
-
IB เองไม่มีวิธีการสวัสดี (ไม่มีในโครงสร้างและฉันไม่ได้กำหนดไว้)
ดังนั้นหา ib .__ loto__ นั่นคือ a.prototype แต่ก็ยังไม่พบ
ค้นหา A.prototype .___ loto__ ต่อไปนั่นคือ Object.prototype ว้าวฉันพบสวัสดีดังนั้นฉันจึงโทรหามันและหยุดมองหา
เอาท์พุท: วัตถุสวัสดี
-
A.Hi ();
-
ตัวเองไม่มีวิธีการสูง (ไม่มีในโครงสร้างและฉันไม่ได้กำหนดไว้)
ดังนั้นค้นหา. __ propo___ ทั้งสองฟังก์ชั่น prototype, ว้าว, ฉันพบสวัสดีดังนั้นฉันจึงเรียกมันและหยุดมองหา
เอาท์พุท: ฟังก์ชั่นสวัสดี
-
ia.say ();
-
IA เองไม่มีคำพูด (ไม่มีในโครงสร้างและฉันไม่ได้กำหนดไว้)
ดังนั้นหา ia .__ proto__ นั่นคือ a.prototype, ว้าวฉันพบว่าฉันจึงโทรหามันและหยุดมองหา
ดังนั้นนี่คือ a.prototype.say
เอาท์พุท: ก
-
ib.say ();
-
IB เองไม่ได้พูด (ไม่มีในโครงสร้างและฉันไม่ได้กำหนดไว้)
ดังนั้นหา ib .__ loto__ นั่นคือ a.prototype ว้าวฉันพบว่าฉันโทรหามันและหยุดมองหา
ดังนั้นนี่คือ a.prototype.say
เอาท์พุท: ก
-
ia.bad ();
-
IA เองไม่มีวิธีที่ไม่ดี (ไม่มีในโครงสร้างและฉันไม่ได้กำหนดไว้)
ดังนั้นมองหา ia .__ proto__ นั่นคือ a.prototype และไม่พบมัน
ดังนั้นมองหา a.prototype .__ loto__ นั่นคือ a.prototype และฉันยังไม่พบมัน
ค้นหา A.prototype .__ loto__ ต่อไปนั่นคือ Object.prototype
return error, ia.bad ไม่ใช่ฟังก์ชัน
-
// -> </mce: สคริปต์>
</script>
ขอบคุณความคิดเห็นการแก้ไขของ Simon! อินสแตนซ์ทั้งหมดไม่พบต้นแบบของตัวเองเมื่อค้นหาวิธีแอตทริบิวต์ (ต้นแบบของอินสแตนซ์ไม่ได้อยู่ในห่วงโซ่ต้นแบบมันสามารถใช้เป็นแอตทริบิวต์เท่านั้น)!