ฟังก์ชั่น JavaScript สามารถ hooked ได้ hooks เป็นวิธีการปรับเปลี่ยนกระบวนการดำเนินการของฟังก์ชั่นแบบไดนามิกหรือส่งคืนผลลัพธ์ในฐานะภาษาไดนามิก นอกจากนี้ยังสามารถใช้การทำงานของ hooks เพื่อฟัง พิมพ์เอาต์พุต ฯลฯ ได้ พารามิเตอร์หรือตัวแปร การแทนที่และการดำเนินการอื่น ๆ
สภาพแวดล้อมการทำงานของบทช่วยสอนนี้: ระบบ Windows 10, JavaScript เวอร์ชัน 1.8.5, คอมพิวเตอร์ Dell G3
สามารถ.
Hook เป็นวิธีการที่ปรับเปลี่ยนกระบวนการดำเนินการหรือส่งคืนผลลัพธ์ของฟังก์ชันแบบไดนามิก และมีการใช้กันอย่างแพร่หลายในการใช้งานจริง ในฐานะภาษาไดนามิก Javascript ยังสามารถดำเนินการ Hook ได้ ด้วยการพัฒนาภาษา Javascript ทำให้มีวิธีการของ Hook เพิ่มมากขึ้น
การแปลตามตัวอักษรของ hook หมายถึง hook ในด้านวิศวกรรมย้อนกลับ มักใช้เพื่อฟัง พิมพ์เอาต์พุต แทนที่ และการดำเนินการอื่น ๆ สำหรับพารามิเตอร์และตัวแปรบางอย่าง
ตัวอย่างมีดังนี้:
รหัสตัวอย่าง
ฟังก์ชั่นเพิ่ม(a,b){คืน a + b}รหัสเบ็ด
นี่เป็นฟังก์ชันบวกที่ง่ายมาก ค่าของพารามิเตอร์ทั้งสองนี้สามารถหาได้จาก Hook ซึ่งเทียบเท่ากับการเพิ่มโค้ด console.log(a,b) ก่อนส่งคืน เพื่อให้ค่าของเหล่านี้ สามารถส่งออกสองรายการเพื่อการวิเคราะห์ได้ จากนั้นคุณสามารถใช้วิธีการต่อไปนี้เพื่อเขียนทับฟังก์ชัน และวิธีนี้คือโหมดมัณฑนากรใน JavaScript
ให้ _add = addadd = function () { console.log('arguments', arguments) ให้ result = _add.apply(this, arguments) console.log('result', result) ส่งคืนผลลัพธ์ // หากไม่ต้องการผลลัพธ์ จากนั้นส่งคืนโดยตรง _add()}รหัสที่สมบูรณ์
ฟังก์ชั่นเพิ่ม (a, b) { ส่งคืน a + b} ให้ _add = addadd = function () { console.log('arguments', arguments) ให้ result = _add.apply(this, arguments) console.log('result' , ผลลัพธ์) ส่งคืนผลลัพธ์ } เพิ่ม (1, 2)การเรียกเพิ่ม (1,2) อีกครั้งจะส่งออกพารามิเตอร์อาร์กิวเมนต์และผลลัพธ์ 3 มีการใช้งาน HOOK ที่ง่ายมาก
อย่างไรก็ตาม ตัวอย่างนี้อาจง่ายเกินไป สิ่งที่ฉันต้องการแสดงคือผ่าน Hook เราสามารถค้นหาฟังก์ชันและตัวแปรที่เราต้องการ Hook และผ่านชุดการดำเนินการ (การคัดลอกฟังก์ชัน การเขียนโปรแกรมเมตา) ตราบใดที่ฟังก์ชันนั้น ถูกกระตุ้นหรือถูกใช้ (ค่า, การแก้ไข) เราจะได้ผลลัพธ์ที่เราต้องการ (ผลลัพธ์ก่อนและหลังการเข้ารหัส (เช่น ก่อนการเข้ารหัส, หลังการเข้ารหัส)) นี่คือจุดประสงค์ของเรา
ตัวอย่างที่ให้ไว้ในหนังสือมีจุดประสงค์เพื่อแสดงให้เห็นว่าคุณต้องการเพิ่มฟังก์ชันบางอย่างให้กับฟังก์ชันดั้งเดิมบางอย่าง (เช่น เพิ่มที่นี่) แต่ฟังก์ชันดั้งเดิมอาจเขียนโดยนักพัฒนารายอื่น ดังนั้นการแก้ไขฟังก์ชันดั้งเดิมโดยตรงอาจนำไปสู่ BUG ที่ไม่รู้จัก ดังนั้นคุณสามารถใช้วิธีการข้างต้นเพื่อคัดลอกฟังก์ชันดั้งเดิมโดยไม่ทำลายฟังก์ชันดั้งเดิม