ทุกวันนี้หลายคนใช้วัตถุ JS เพื่อใช้รหัสหลังจากเรียนรู้ JSP แต่ใน JavaScript วัตถุ JS เป็นภาษาที่มีพลัง เพื่อนหลายคนที่เพิ่งเริ่มต้นใช้งานจะอยากรู้ว่าวิธีการเขียนเชิงวัตถุของ JavaScript คืออะไร? ความแตกต่างคืออะไร? ให้ฉันอธิบายวิธีการเขียนและความแตกต่างเชิงวัตถุ JavaScript
ใน JS โดยทั่วไปมีสองวิธีในการใช้ OOP:
ครั้งแรก: ใช้คำหลักนี้
ฟังก์ชั่น Class1 ()
-
this.onclick = function (e)
-
สำหรับ (var i = 0; i <1000; i ++)
-
var a = วันที่ใหม่ ();
-
-
-
ใช้สิ่งนี้ วิธีการสามารถเพิ่มคุณสมบัติและวิธีการให้กับวัตถุได้อย่างยืดหยุ่นและคล้ายกับภาษา OOP ส่วนใหญ่และสามารถเพิ่มได้ในระหว่างการดำเนินการ
ประเภทที่สอง: ใช้คำหลักต้นแบบ
ฟังก์ชั่น clickfunc (e)
-
สำหรับ (var i = 0; i <1000; i ++)
-
var a = วันที่ใหม่ ();
-
-
ฟังก์ชั่น Class2 ()
-
-
class2.prototype.onclick = clickfunc;
ในแง่ของการใช้งานไม่มีสิ่งแรกที่ดูเหมือนยืดหยุ่น อย่างไรก็ตามก่อนที่วัตถุจะเป็นของใหม่คุณสามารถเพิ่มคุณสมบัติและวิธีการของวัตถุได้ตลอดเวลา
แต่พวกเขาไม่เท่ากัน ค่อนข้างพูดฉันชอบวิธีแรกเพราะวิธีแรกค่อนข้างเข้มข้นและง่ายต่อการอ่านรหัส อย่างไรก็ตามเมื่อทำงานประสิทธิภาพการทำงานของพวกเขาจะแตกต่างกันอย่างมาก มาดูรหัสทดสอบด้านล่าง:
var total = new Array ();
ฟังก์ชั่น test1 ()
-
var a = วันที่ใหม่ ();
สำหรับ (var i = 0; i <10,00000; i ++)
-
var c = new class1 ();
//total.push(c);
-
var b = วันที่ใหม่ ();
การแจ้งเตือน (b.getTime ()-a.getTime ());
-
ฟังก์ชั่น test2 ()
-
var a = วันที่ใหม่ ();
สำหรับ (var i = 0; i <10,00000; i ++)
-
var c = new class2 ();
//total.push(c);
-
var b = วันที่ใหม่ ();
การแจ้งเตือน (b.getTime ()-a.getTime ());
-
ขั้นตอนแรกคือการทดสอบเวลาดำเนินการ: พบว่า test1 () ใช้เวลา 142ms ในขณะที่ test2 () ใช้เวลา 50ms เท่านั้น ในแง่ของประสิทธิภาพเวลาวิธีการต้นแบบมีประสิทธิภาพมากกว่านี้
ขั้นตอนที่สองของวัตถุ JavaScript คือการทดสอบการใช้หน่วยความจำลบความคิดเห็นบน Total.push (C); ใน total.push (c); เพื่อให้พวกเขาถูกเพิ่มเข้าไปในอาร์เรย์เพื่อป้องกันไม่ให้วัตถุที่ไม่ได้อ้างอิงจากการเป็น GC เมื่อมีวัตถุจำนวนมากเมื่อถูกสร้างขึ้น เป็นผลให้พบว่าช่องว่างไม่ใหญ่มาก วิธีแรกใช้หน่วยความจำยี่สิบหรือสามสิบม. ในขณะที่วิธีที่สองต้องการมากกว่าหนึ่งร้อยเค
JavaScript สร้างวัตถุ
สาเหตุการอนุมาน:
เมื่อประมวลผลรหัสทั้งสองนี้ประเภทแรกคือ JS Parser ซึ่งสร้างวิธีการแยกต่างหากสำหรับแต่ละวัตถุซึ่งจะเพิ่มค่าใช้จ่ายหน่วยความจำและเพิ่มเวลาทำงานเมื่อสร้างวิธีการ ประเภทที่สองคือ JS Parser เช่นคอมไพเลอร์ OOP ส่วนใหญ่จัดเก็บส่วนข้อมูลของวัตถุและเมธอดแยกต่างหาก สำหรับข้อมูลส่วนตัวของวัตถุหนึ่งสำเนาต่อวัตถุและวิธีการเหล่านี้จะถูกวางไว้ในเซ็กเมนต์วิธีการสาธารณะดังนั้นเวลาทำงานและค่าใช้จ่ายหน่วยความจำสามารถลดลงได้
ข้างต้นเป็นบรรณาธิการของ FO XIN เพื่ออธิบายความแตกต่างในวิธีการเขียนเชิงวัตถุและความแตกต่างของ JavaScript หากคุณต้องการทราบอย่างลึกซึ้งยิ่งขึ้นคุณสามารถไปที่ช่องเทคโนโลยีของ FO XIN เพื่อทำความเข้าใจ