ต้นแบบและการปิดเป็นเรื่องที่พบได้บ่อยที่สุดยากที่สุดที่จะเข้าใจและได้รับการยกย่องอย่างง่ายดายที่สุดว่าเป็นสองส่วนของปัญหาใน JavaScript แน่นอนว่าพวกเขายังมีส่วนขยายของพวกเขาเช่นโซ่ขอบเขตมรดก ฯลฯ เมื่อเร็ว ๆ นี้ฉันได้อ่านพวกเขาด้วยวิธีต่าง ๆ พลิกพวกเขาทั้งหมดและบันทึกประสบการณ์ของฉันเอง การเขียนจะทำให้ความเข้าใจของฉันลึกซึ้งยิ่งขึ้น (ไม่มีส่วนเกี่ยวข้องกับชื่อดังนั้นฉันถอนหายใจทุกครั้งที่ฉันรู้สึกว่าฉันเข้าใจฉันยังคงได้รับรางวัลมากมายหลังจากอ่านมัน)
ก่อนอื่นมาพูดถึงคำหลักใหม่ใน JavaScript โดยปกติเราใช้มันเพื่อสร้างวัตถุอินสแตนซ์ของคลาส ใน JavaScript หลังจากอินสแตนซ์วัตถุเราได้รับมรดกคุณลักษณะและวิธีการของคลาส มาสาธิตผ่านรหัสกันเถอะ
ฟังก์ชั่นบุคคล (ชื่อ) {this.name = name;} person.age = "23"; person.prototype.say = function () {console.log ("ฉัน" + this.name);}; var person = บุคคลใหม่ ("Wang Fang"); console.log (person.name, // wang fang person.height // undefined); Person.Say (); // ฉันวังฟางคอนโซลล็อก (person.name, // บุคคลบุคคล // 23); person.say (); //person.say ไม่ใช่ฟังก์ชั่นมาดูบรรทัดนี้กันเถอะ
var person = บุคคลใหม่ ("วังวัง");
ใหม่ทำอะไร? ต่อไปนี้เป็นสิ่งที่งานของ JS Engine ทำ
var obj = {}; obj .__ proto__ = person.prototype; var result = person.call (obj, "wang fang"); return typeof result === 'obj'? ผลลัพธ์: obj;1. สร้างวัตถุใหม่ก่อน
2. จุด __proto__ ของ OBJ ไปยังต้นแบบวัตถุต้นแบบต้นแบบของบุคคลและจากนั้นห่วงโซ่ต้นแบบของวัตถุ OBJ ถูกสร้างขึ้น: obj-> person.prototype-> object.prototype-> null
3. เรียกฟังก์ชันบุคคลในพื้นที่ดำเนินการของวัตถุ OBJ และส่งพารามิเตอร์ "วังวัง" มันเทียบเท่ากับผลลัพธ์ var = obj.person ("วังวัง") หลังจากประโยคนี้ถูกดำเนินการ OBJ จะสร้างชื่อแอตทริบิวต์และกำหนดให้เป็น "วังวัง"
4. กำหนดค่าผลตอบแทน หากไม่มีค่าส่งคืนหรือส่งคืนค่าที่ไม่ใช่วัตถุให้ส่งคืน OBJ มิฉะนั้นค่าส่งคืนจะถูกส่งคืนเป็นวัตถุใหม่ (บิดเล็กน้อยผู้ให้บริการที่สองผู้ประกอบการโปรดตรวจสอบด้วยตัวเอง)
สรุป:
ฟังก์ชั่นหลักของคำหลักใหม่ของ JavaScript คือการสืบทอดดังที่ได้กล่าวไว้ในตัวอย่างข้างต้น แต่จำไว้ว่าบุคคลนั้นเป็นฟังก์ชั่นในขณะที่บุคคลเป็นวัตถุ สำหรับความแตกต่างระหว่างฟังก์ชั่นและวัตถุฉันจะเขียนมันในภายหลังถ้าฉันมีเวลา
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น