กรณีที่วิธีการเขียนในคอนสตรัคเตอร์เรียกว่าวิธีการภายในฟังก์ชั่นและกรณีที่วิธีการเขียนบนแอตทริบิวต์ต้นแบบเรียกว่าวิธีการบนต้นแบบ
•วิธีการภายในฟังก์ชั่น: การใช้วิธีการภายในฟังก์ชั่นเราสามารถเข้าถึงตัวแปรส่วนตัวภายในฟังก์ชั่น หากวัตถุที่เราใช้ตัวสร้างใหม่เพื่อกำหนดให้เราใช้ตัวแปรส่วนตัวภายในตัวสร้างเราควรพิจารณาใช้วิธีการภายในฟังก์ชั่นในเวลานี้
•วิธีการเกี่ยวกับต้นแบบ: เมื่อเราต้องการสร้างวัตถุจำนวนมากผ่านฟังก์ชั่นและวัตถุเหล่านี้มีวิธีการมากมาย ในเวลานี้เราต้องพิจารณาเพิ่มวิธีการเหล่านี้ลงในต้นแบบของฟังก์ชั่น ในกรณีนี้รหัสของเราจะใช้หน่วยความจำค่อนข้างเล็ก
•ในแอปพลิเคชันจริงวิธีการทั้งสองนี้มักจะใช้ร่วมกัน ดังนั้นเราต้องเข้าใจสิ่งที่เราต้องการก่อนจากนั้นเลือกวิธีการใช้งาน
// constructor afunction a (ชื่อ) {this.name = name || 'a'; this.sayhello = function () {console.log ('สวัสดีชื่อของฉันคือ:' + this.name); }} // constructor bfunction b (ชื่อ) {this.name = name || 'b';} b.prototype.sayhello = function () {console.log ('สวัสดีชื่อของฉันคือ:' + this.name);}; var a1 = ใหม่ a ('a1'); var a2 = ใหม่ a ('a2'); b ('b2'); b1.sayhello (); b2.sayhello ();ฉันเขียนตัวสร้างสองตัวแรกคือ A ซึ่งมีวิธีการพูดว่าเฮลโล; ประการที่สองคือคอนสตรัคเตอร์ B ซึ่งเขียนว่าวิธีการพูดว่า hello เกี่ยวกับคุณสมบัติต้นแบบของคอนสตรัคเตอร์ B. การเขียนวิธีการภายในคอนสตรัคเตอร์จะเพิ่มค่าใช้จ่ายในการเริ่มต้นวัตถุผ่านตัวสร้างและการเขียนวิธีการบนคุณสมบัติต้นแบบลดต้นทุนนี้ได้อย่างมีประสิทธิภาพ คุณอาจคิดว่าวิธีการโทรบนวัตถุนั้นเร็วกว่าวิธีการเรียกใช้ในห่วงโซ่ต้นแบบซึ่งไม่ใช่กรณี หากคุณไม่มีต้นแบบมากมายในวัตถุความเร็วของพวกเขาจะคล้ายกันจริง ๆ
นอกจากนี้บางสิ่งที่ควรทราบ:
•ก่อนอื่นถ้าคุณกำหนดวิธีการบนคุณสมบัติต้นแบบของฟังก์ชั่นโปรดจำไว้ว่าหากคุณเปลี่ยนวิธีการวิธีการของวัตถุทั้งหมดที่สร้างโดยตัวสร้างนี้จะเปลี่ยนไป
•อีกประเด็นหนึ่งคือปัญหาของการปรับปรุงตัวแปร เราสามารถดูรหัสต่อไปนี้:
func1 (); // จะมีการรายงานข้อผิดพลาดที่นี่เนื่องจาก FunC1 ไม่ได้รับการกำหนดค่าเมื่อฟังก์ชั่นถูกดำเนินการ ข้อผิดพลาด: func1 ไม่ใช่ functionvar func1 = function () {console.log ('func1');}; func2 (); // สิ่งนี้จะถูกดำเนินการอย่างถูกต้องเนื่องจากการประกาศของฟังก์ชั่นจะได้รับการเลื่อนตำแหน่ง function func2 () {console.log ('func2');}•เกี่ยวกับปัญหาของการทำให้เป็นอนุกรมวัตถุ คุณลักษณะที่กำหนดไว้ในต้นแบบของฟังก์ชันจะไม่ถูกทำให้เป็นอนุกรม คุณสามารถดูรหัสต่อไปนี้:
ฟังก์ชั่น A (ชื่อ) {this.name = name;} a.prototype.say what = 'พูดอะไร ... '; var a = new a ('dreamapple'); console.log (json.stringify (a));เราจะเห็นได้ว่าผลลัพธ์คือ {"ชื่อ": "Dreamapple"}
บทความข้างต้นกล่าวถึงวิธีการและต้นแบบของตัวสร้าง JS สั้น ๆ เป็นเนื้อหาทั้งหมดที่ฉันได้แบ่งปันกับคุณ ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น