__proto__ เป็นต้นแบบภายในและต้นแบบเป็นตัวสร้างต้นแบบ (ตัวสร้างเป็นฟังก์ชั่นจริง ๆ )
ต้นแบบของตัวสร้างเป็นวัตถุ
ตัวสร้างคืออะไร?
ในการสร้างวัตถุคุณต้องมีตัวสร้างวัตถุก่อนเช่นเดียวกับใน PHP ในการสร้างวัตถุคุณต้องมีคลาสก่อน
สาระสำคัญของตัวสร้างเป็นฟังก์ชั่น คำถามต่อไปนี้คือ: จะสร้างวัตถุผ่านตัวสร้างนี้ได้อย่างไร?
คำตอบ: ใหม่
ตัวสร้างสร้างวัตถุ
1. __proto__ ของตัวสร้าง/ฟังก์ชั่นทั้งหมดชี้ไปที่ function.prototype ซึ่งเป็นฟังก์ชั่นที่ว่างเปล่า (ฟังก์ชั่นว่าง)
การคัดลอกรหัสมีดังนี้:
หมายเลข .__ proto__ === function.prototype
// จริง
บูลีน .__ proto__ === function.prototype
// จริง
String .__ proto__ === function.prototype
// จริง
Object .__ proto__ === function.prototype
// จริง
ฟังก์ชั่น .__ proto__ === function.prototype
// จริง
อาร์เรย์ .__ โปรโต__ ===
function.prototype
// จริง
regexp .__ proto__ === function.prototype
// จริง
ข้อผิดพลาด. __ proto__ ===
function.prototype
// จริง
วันที่ .__ Proto__ ===
function.prototype
// จริง
สิ่งนี้แสดงให้เห็นว่าหมายเลขและตัวสร้างอื่น ๆ เป็นวัตถุของฟังก์ชันจริง กล่าวคือมันเทียบเท่ากับ var number = new function ();
มีตัวสร้าง/วัตถุในตัว 12 ตัวใน JavaScript (JSON ถูกเพิ่มเข้ามาใหม่ใน ES5) และนี่คือ 8 ตัวสร้างที่สามารถเข้าถึงได้ ส่วนที่เหลือคือการเข้าถึงทั่วโลกไม่สามารถเข้าถึงได้โดยตรงอาร์กิวเมนต์จะถูกสร้างขึ้นโดยเอ็นจิ้น JS เมื่อการเรียกใช้ฟังก์ชันคณิตศาสตร์และ JSON มีอยู่ในรูปแบบวัตถุโดยไม่ต้องใหม่ __proto__ ของพวกเขาคือ Object.prototype ดังนี้
การคัดลอกรหัสมีดังนี้:
Math .__ Proto__ === Object.prototype
// จริง
JSON .__ Proto__ === Object.prototype
// จริง
"ตัวสร้าง/ฟังก์ชั่นทั้งหมด" ที่กล่าวถึงข้างต้นรวมถึงสิ่งที่กำหนดเองอย่างแน่นอน ดังนี้
การคัดลอกรหัสมีดังนี้:
// การประกาศฟังก์ชั่น
ฟังก์ชั่นบุคคล ()
-
// ฟังก์ชั่นนิพจน์
Var Man
-
การทำงาน()
-
console.log (person .__ proto__ === function.prototype)
// จริง
console.log (man .__ proto__ ===
function.prototype)
// จริง
สิ่งนี้หมายความว่าอย่างไร?
ตัวสร้างทั้งหมดมาจาก function.prototype และรวมถึงวัตถุและฟังก์ชั่นตัวสร้างรูท ตัวสร้างทั้งหมดสืบทอดคุณสมบัติและวิธีการของฟังก์ชั่น prototype เช่นความยาวโทรใช้ผูก (ES5)
function.prototype ยังเป็นต้นแบบเดียวที่มี typeof xxx.prototype เป็น "ฟังก์ชั่น" ต้นแบบของตัวสร้างอื่น ๆ คือวัตถุทั้งหมด ดังนี้
การคัดลอกรหัสมีดังนี้:
console.log (typeof function.prototype)
// การทำงาน
console.log (typeof object.prototype)
// วัตถุ
console.log (typeof number.prototype)
// วัตถุ
console.log (typeof boolean.prototype)
// วัตถุ
console.log (typeof string.prototype)
// วัตถุ
console.log (typeof array.prototype)
// วัตถุ
console.log (typeof regexp.prototype)
// วัตถุ
console.log (typeof error.prototype)
// วัตถุ
console.log (typeof date.prototype)
// วัตถุ
console.log (typeof object.prototype)
// วัตถุ
โอ้และมันก็ถูกกล่าวถึงข้างต้นว่ามันเป็นฟังก์ชั่นที่ว่างเปล่าลองดูที่มันภายใต้การแจ้งเตือน (ฟังก์ชั่น. prototype)
ฉันรู้ว่าตัวสร้างทั้งหมด (รวมถึงในตัวและกำหนดเอง) เป็น function.prototype ดังนั้นใครคือ __proto__ ของ function.prototype?
ฉันเชื่อว่าทุกคนเคยได้ยินว่าฟังก์ชั่นใน JavaScript เป็นพลเมืองชั้นหนึ่งเช่นกันดังนั้นพวกเขาจะสะท้อนได้ที่ไหน? ดังนี้
การคัดลอกรหัสมีดังนี้:
console.log (function.prototype .__ proto__ ===
Object.prototype)
// จริง
นี่แสดงให้เห็นว่าตัวสร้างทั้งหมดเป็นวัตถุ JS ธรรมดาและพวกเขาสามารถเพิ่ม/ลบแอตทริบิวต์ ฯลฯ ไปยังตัวสร้าง ในเวลาเดียวกันมันยังสืบทอดวิธีการทั้งหมดบน Object.prototype: ToString, Valueof, HasownProperty ฯลฯ
__proto__ ของ Object.prototype คือใคร?
การคัดลอกรหัสมีดังนี้:
Object.prototype .__ Proto__ ===
โมฆะ //
จริง
มันมาถึงด้านบนแล้วสำหรับ Null
คุณมีความเข้าใจเกี่ยวกับความแตกต่างระหว่าง __proto__ และต้นแบบใน JavaScript หรือไม่? หากคุณมีคำถามใด ๆ ให้ฝากข้อความไว้และให้เราพูดคุยกัน