เมื่อเราสร้างวัตถุด้วยตัวสร้างคุณสมบัติของมันจะถูกเพิ่มเข้าไปในสิ่งนี้ และแอตทริบิวต์ที่เพิ่มเข้ามานี้จะไม่เปลี่ยนแปลงกับเอนทิตีและในเวลานี้วิธีการของเราจะไม่มีประสิทธิภาพ ตัวอย่างเช่น:
ฟังก์ชั่นเธอ () {this.name = 'anna';}ซึ่งหมายความว่าทุกครั้งที่เราสร้างวัตถุอินสแตนซ์ด้วยใหม่ของเธอ () เราจะสร้างแอตทริบิวต์ชื่อใหม่และมีพื้นที่เก็บข้อมูลของตัวเองในหน่วยความจำที่เป็นของแอตทริบิวต์ ในความเป็นจริงเราสามารถเพิ่มแอตทริบิวต์ชื่อลงในต้นแบบเพื่อให้อินสแตนซ์ทั้งหมดสามารถแชร์แอตทริบิวต์ชื่อนี้:
ฟังก์ชั่นเธอ () {} her.prototype.name = 'anna';ด้วยวิธีนี้เมื่อเราใช้ใหม่ของเธอ () เพื่อสร้างวัตถุแอตทริบิวต์ชื่อไม่ได้เป็นคุณสมบัติส่วนตัวของวัตถุใหม่อีกต่อไป แต่จะถูกเพิ่มลงในต้นแบบของวัตถุ แม้ว่าวิธีนี้จะมีประสิทธิภาพมาก แต่ก็มีไว้สำหรับคุณสมบัติที่ไม่เปลี่ยนรูปในวัตถุอินสแตนซ์ นี่คือแน่นอน หากคุณเปลี่ยนคุณสมบัตินี้แอตทริบิวต์ของวัตถุใหม่ที่สร้างขึ้นทั้งหมดจะมีการเปลี่ยนแปลง นี่ไม่ใช่สิ่งที่เราต้องการ ~~~ คุณสมบัติสาธารณะของวัตถุนั้นเหมาะอย่างยิ่งสำหรับวิธีการนี้
ที่นี่เรามาปรับปรุงตัวอย่างก่อนหน้า:
ฟังก์ชั่นเธอ () {}; her.prototype.name = 'anna'; her.prototype.toString = function () {return this.name;} ฟังก์ชั่นของเขา () {}; His.prototype = ใหม่เธอ (); His.prototype.constructor = His; His.prototype.sex = 'Women';อย่างที่คุณเห็นเรามักจะเสร็จสิ้นการสร้างมรดกที่เกี่ยวข้องก่อนที่เราจะขยายวัตถุต้นแบบมิฉะนั้นวิธีการใหม่ที่ตามมาใน His.prototype อาจลบสิ่งที่สืบทอดมา
ฟังก์ชั่นเด็ก (f, m) {this.eat = f; this.don = m;} child.prototype = new his (); child.prototype.constructor = child; child.prototype.name = 'jok'; child.prototype.fun = function () {return.eat + this.don}}อย่างที่คุณเห็นความแตกต่างระหว่างการโทร TOSTRING () เป็นเพียงการดำเนินการจำนวนน้อยที่อยู่เบื้องหลัง ความแตกต่างที่สำคัญคือคุณสมบัติงานค้นหาของวิธีการจะเกิดขึ้นในเธอมากขึ้น prototype
วิธีการใช้งาน JavaScript ด้านบนของการย้ายแอตทริบิวต์ที่ใช้ร่วมกันไปยังต้นแบบคือเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น