วิธีการใช้วิธีการมากเกินไปใน JS? สิ่งนี้เกี่ยวข้องกับสามประเด็น
1. ปัญหาของฟังก์ชั่นการโทรที่มีชื่อเดียวกัน
2. พารามิเตอร์พิเศษในฟังก์ชัน
3. วิธีการใช้อาร์กิวเมนต์เพื่อใช้วิธีการโอเวอร์โหลด
1. ปัญหาของฟังก์ชั่นการโทรที่มีชื่อเดียวกัน
ทุกคนรู้ว่าหากมีหลายฟังก์ชั่นที่มีชื่อเดียวกันใน JS ฟังก์ชั่นสุดท้ายจะถูกใช้ทุกครั้งเมื่อโทร JS ไม่ได้เกินพิกัดจริง ๆ กล่าวคือหากมีการกำหนดฟังก์ชั่นหลายฟังก์ชั่นที่มีชื่อเดียวกันพารามิเตอร์เดียวจะแตกต่างกัน เมื่อโทรมา JS ไม่สนใจจำนวนพารามิเตอร์ แต่เฉพาะคำสั่งก่อนและหลัง
ตัวอย่างเช่น:
ฟังก์ชั่น test1 (arg1) {alert ("พารามิเตอร์ 1:"+arg1); } ฟังก์ชั่น test1 (arg1, arg2, arg3) {alert ("พารามิเตอร์ 1:"+arg1+"พารามิเตอร์ 2:"+arg2+"พารามิเตอร์ 3:"+arg3); } // การทดสอบฟังก์ชันรหัสทดสอบ () {test1 ("1")}แม้ว่าเราจะเรียก test1 ("1"), ผ่านพารามิเตอร์การโทรจริงคือ test1 (arg1, arg2, arg3) และเราไม่เรียกวิธีการที่มีพารามิเตอร์เดียวเพียงเพราะเราผ่านพารามิเตอร์
2. พารามิเตอร์พิเศษในฟังก์ชัน
หากเราใช้รหัสต่อไปนี้
ฟังก์ชั่น test1 (arg1, arg2, arg3) {alert ("พารามิเตอร์ 1:"+arg1+"พารามิเตอร์ 2:"+arg2+"พารามิเตอร์ 3:"+arg3); } ฟังก์ชั่น test1 (arg1) {alert ("พารามิเตอร์ 1:"+arg1); } // การทดสอบฟังก์ชันรหัสทดสอบ () {test1 ("1", "2")}เรารู้ว่าการโทรนั้นเป็น TEST1 (Arg1) เสมอซึ่งหมายถึงฟังก์ชั่นที่มีพารามิเตอร์เดียวเท่านั้น แต่จะส่งพารามิเตอร์อื่น ๆ ผ่านได้อย่างไร
สิ่งนี้ต้องการการใช้พารามิเตอร์พิเศษในอาร์กิวเมนต์ฟังก์ชันซึ่งมีพารามิเตอร์ทั้งหมดที่ส่งผ่านไปยังฟังก์ชัน
ฟังก์ชั่น test1 () {var text = ""; สำหรับ (var i = 0; i <arguments.length; i ++) {text+= "พารามิเตอร์"+i+":"+อาร์กิวเมนต์ [i]; } การแจ้งเตือน (ข้อความ); } // การทดสอบฟังก์ชันรหัสทดสอบ () {test1 ("1"); test1 ("1", "2"); test1 ("1", "2", "3"); -หลังจากการทดสอบพบว่าอาร์กิวเมนต์มีพารามิเตอร์ทั้งหมดที่ส่งผ่านไปยังฟังก์ชันและอาร์กิวเมนต์ความยาวแตกต่างกันไปตามจำนวนพารามิเตอร์จริงที่ผ่านและอาร์กิวเมนต์ความยาวแสดงถึงจำนวนของพารามิเตอร์ฟังก์ชันจริง
3. จะใช้ฟังก์ชั่นมากเกินไปใน JS ได้อย่างไร?
หลังจากการทดสอบข้างต้นพบว่าการทำงานมากเกินไปของฟังก์ชั่นไม่สามารถนำไปใช้ได้โดยตรงใน JS แต่มีวิธีที่จะบรรลุเอฟเฟกต์การโอเวอร์โหลดที่คล้ายกันหรือไม่?
ใช่ส่วนใหญ่ใช้อาร์กิวเมนต์
ตัวอย่างเช่น:
ฟังก์ชั่น test1 () {var text = ""; if (arguments.length == 1) {// การเรียกวิธีการหนึ่งพารามิเตอร์} อื่นถ้า (arguments.length == 2) {// การเรียกใช้วิธีการสองพารามิเตอร์} else {// วิธีอื่น}}