เกี่ยวกับข้อบกพร่องของ JavaScript
มาเป็นเวลานาน สิ่งที่น่ารำคาญที่สุดในการพัฒนาคือโค้ด Javascript วันนี้ผมจะมาพูดถึงข้อบกพร่องของ Javascript
เรามาพูดถึงประเด็นพื้นฐานบางอย่างก่อน
1: ความเข้ากันได้ต่ำ
มีเบราว์เซอร์จำนวนมากใน WWW เช่น Netscape Navigator, Mosaic และ HotJava เป็นต้น แต่เบราว์เซอร์แต่ละตัวรองรับ JavaScript ในระดับที่แตกต่างกัน เบราว์เซอร์ที่มี เมื่อใช้สคริปต์ JavaScript บนหน้าแรก จะมีเอฟเฟกต์บางอย่างและบางครั้งอาจไม่แสดงด้วยซ้ำ
ด้วยเหตุนี้ นักพัฒนา JavaScript จึงจำเป็นต้องพัฒนาเวอร์ชันที่แตกต่างกันสำหรับเบราว์เซอร์ที่แตกต่างกัน ปริมาณงานเพิ่มขึ้นจริง และโดยพื้นฐานแล้วเป็นงานที่ทำซ้ำทั้งหมด นี่คือสิ่งที่เราไม่อยากเห็น
2: ทำให้หน่วยความจำรั่ว
JavaScript เป็นภาษาการจัดการหน่วยความจำ ซึ่งหมายความว่า JavaScript มีความสามารถในการรวบรวมแพ็คเก็ตในตัว จึงสามารถแยกตัวแปรที่ไม่ได้ใช้โดยเส้นทางอ้างอิงอีกต่อไป และจัดสรรหน่วยความจำใหม่ที่ใช้โดยตัวแปรเหล่านี้
นี่เป็นหลักการทำงานขั้นพื้นฐานที่ดี แต่เนื่องจากการอ้างอิงแบบวงกลมเหล่านี้เมื่อออบเจ็กต์โมเดลและองค์ประกอบมุมมองอ้างอิงถึงกัน คุณจึงไม่สามารถพึ่งพาคุณลักษณะนี้เพื่อเพิ่มประสิทธิภาพการใช้งานหน่วยความจำของคุณได้ โดยหลักการแล้ว หากวัตถุเป็นศูนย์ องค์ประกอบจะเป็นศูนย์ แต่หากมีการอ้างอิงแบบย้อนกลับจากองค์ประกอบหนึ่งไปยังอีกวัตถุ ตัวรวบรวมแพ็กเก็ตจะไม่สัมผัสวัตถุเหล่านี้
ตอนนี้ ปัญหาเกิดขึ้น: ในโมเดลออบเจ็กต์ไฟล์ โหนด DOM ใดๆ ในแผนผังไฟล์อาจถูกอ้างอิงโดยองค์ประกอบอื่นๆ ในแผนผัง โดยไม่คำนึงว่าจะถูกอ้างอิงโดยออบเจ็กต์อื่นหรือไม่! ดังนั้น วัตถุใดๆ ที่ทำเครื่องหมายไว้ในตัวรวบรวมแพ็กเก็ตที่ถูกอ้างอิงย้อนหลังโดยโหนด DOM จะต้องว่างเปล่าในทิศทางนี้ มิฉะนั้น หน่วยความจำจะยังคงอยู่ในสถานะที่จัดสรร ในความเป็นจริงโปรแกรมเมอร์มักเพิกเฉยต่อสิ่งนี้ นี่คือเหตุผลว่าทำไมหน่วยความจำของเกมบนเว็บขนาดใหญ่จำนวนมากจึงเพิ่มขึ้นอย่างรวดเร็วหลังจากเปิดขึ้นมา
3: ไม่มีการรองรับการสตรีมสื่อ
คุณสามารถใช้วิธีการฝังผู้เล่นอื่นเท่านั้น
เป้าหมายการออกแบบดั้งเดิมของ Javascript คือ "ทำให้หน้าเว็บเคลื่อนไหว" สิ่งนี้สำเร็จแล้วและมีความก้าวหน้าบางประการ อย่างไรก็ตาม “การเคลื่อนไหว” เป็นเพียง “การเคลื่อนไหว” ซึ่งไม่เพียงพอ เมื่อ Javascript เผชิญกับ Rich Application มันค่อนข้างไร้พลัง
ตอนนี้ หากคุณต้องการหารือเกี่ยวกับการพัฒนาจาวาสคริปต์ คุณไม่ควรจำกัดอยู่เพียง Javascript แต่ควรพิจารณา HTML (DHTML), DOM, Javascript และ CSS ร่วมกัน ลองคิดจากมุมมองของแอปพลิเคชันเบราว์เซอร์ (ขออภัยที่ฉันคิดค้นคำว่า "แอปพลิเคชันเบราว์เซอร์")