อันที่จริงเมื่อฉันเริ่มเรียนรู้ JS ครั้งแรกฉันดูการดำเนินการตามมรดก ในเวลานั้นฉันแค่พยายามเข้าใจกลุ่มรหัสที่ฉันเห็นจากหนังสือ ฉันคิดใหม่ในวันนี้และรู้สึกว่านี่เป็นผลมาจากวิวัฒนาการของการสำรวจความคิด
มรดกหมายถึงการใช้ซ้ำ
หากคุณใส่ความคิดโดยธรรมชาติของการสืบทอดและปล่อยให้ B นำสมาชิกของ A กลับมาใช้ใหม่วิธีที่ง่ายที่สุดและหยาบคายที่สุดในการทำมัน b = a;
จากนั้นคำถามคือ: การเปลี่ยนแปลงใด ๆ เป็น B คือการเปลี่ยนแปลงเป็น (วัตถุเดียวกัน)
ตกลงแล้วคัดลอกหนึ่ง หากสำเนาตื้นไม่ปลอดภัยพอให้ใช้สำเนาลึก
ปัญหา: รหัสถูกนำกลับมาใช้ใหม่ แต่หน่วยความจำนั้นสูญเปล่า (โดยไม่คำนึงถึงตัวแปรหรือวิธีการมันเป็นวัตถุใน JS)
หากคุณไม่คัดลอกอ่านและเขียนคุณสามารถใช้ JS Prototype, B .__ Proto__ = A โดยทั่วไปเราจะไม่เปลี่ยน __proto__ โดยตรงมันรุนแรงเกินไป JS ให้วิธีการที่สามารถบรรลุเป้าหมายได้มากขึ้น "อ่อนโยน" - Object.create (B)
วิธีนี้เป็นไปได้ แต่นี่เป็นเพียงโหมดการนำกลับมาใช้ใหม่สำหรับวัตถุเฉพาะ จะเป็นอย่างไรถ้าเราบรรลุ "วัตถุที่สร้างขึ้นโดยใช้ ConstructorB สามารถนำต้นแบบของวัตถุของ Constructora กลับมาใช้ใหม่ได้
คำตอบคือ: ปฏิบัติต่อ b เป็น constructorb.prototype และปฏิบัติต่อ as constructora.prototype
คำถาม:
สารละลาย:
เมื่อประกาศ constructorB ระบบจะถาม structorb.prototype.constructor โดยอัตโนมัติ = constructorb; ในรหัสข้างต้นตัวสร้างจะถูกโยนทิ้งไปและเพิ่มตัวสร้าง
ข้างต้นเป็นมรดกพื้นฐานที่สุด มันไม่ได้อยู่ในขอบเขตของบทความนี้เกี่ยวกับวิธีการที่ subclasses เรียกตัวสร้างและสมาชิกของคลาสหลักโดยทั่วไป (เช่น this._super) วิธีการใช้โหมดการสืบทอดโดยทั่วไปมากขึ้น
ข้างต้นเป็นเนื้อหาเต็มรูปแบบของมรดกแบบเก่า ๆ ของคลาส JavaScript ที่บรรณาธิการนำมาให้คุณ ฉันหวังว่าทุกคนจะสนับสนุน wulin.com เพิ่มเติม ~