นิยามฟังก์ชั่น JS สามารถระบุชื่อของพารามิเตอร์ที่เป็นทางการ มากหรือน้อยเราคิดว่า JS สามารถรองรับวิธีการมากเกินไปอย่างน้อยด้วยพารามิเตอร์ที่แตกต่างกัน น่าเสียดายที่นี่เป็นเพียงภาพลวงตา พารามิเตอร์ทั้งหมดของ JS ถูกส่งผ่านในอาร์กิวเมนต์ พารามิเตอร์นี้คล้ายกับอาร์เรย์ เมื่อมีการเรียกฟังก์ชันพารามิเตอร์จริงทั้งหมดจะถูกเก็บไว้ในโครงสร้างข้อมูลนี้ พารามิเตอร์อย่างเป็นทางการที่ระบุเมื่อเรากำหนดฟังก์ชั่นจริงกำหนดวิธีการเข้าถึงอย่างรวดเร็วสำหรับข้อมูลในโครงสร้างข้อมูลนี้ กล่าวอีกนัยหนึ่งฟังก์ชั่นทั้งหมดของ JS รองรับพารามิเตอร์ที่ไม่มีที่สิ้นสุดและชนิดข้อมูลเป็นประเภทที่อ่อนแอดังนั้นจึงไม่มีวิธีการที่แตกต่างระหว่างฟังก์ชั่น JS ยกเว้นชื่อหรือไม่?
มีวิธีเสมอเราสามารถใช้อาร์กิวเมนต์วัตถุพิเศษใน JavaScript เพื่อจำลองฟังก์ชั่นโอเวอร์โหลด ใช้เพื่อกำหนดจำนวนหรือประเภทของพารามิเตอร์ขาเข้าเพื่อแยกความแตกต่างของการโอเวอร์โหลด
1. โหลดซ้ำตามจำนวนพารามิเตอร์
JS เพื่อกำหนดจำนวนพารามิเตอร์ที่เข้ามาสามารถตัดสินได้โดยอาร์กิวเมนต์แอตทริบิวต์ความยาว
การคัดลอกรหัสมีดังนี้:
<script type = "text/javascript">
ฟังก์ชั่นเพิ่ม () {
if (arguments.length == 1) {
การแจ้งเตือน (อาร์กิวเมนต์ [0] + 10);
-
อื่นถ้า (arguments.length == 2) {
การแจ้งเตือน (อาร์กิวเมนต์ [0] + อาร์กิวเมนต์ [1]);
-
-
// ฟังก์ชั่นโทร
เพิ่ม (10);
เพิ่ม (10, 20);
</script>
2. โหลดใหม่ตามประเภทพารามิเตอร์
มี 3 วิธีในการตัดสินประเภทตัวแปร:
1. ใช้คำสั่ง typeof เพื่อตัดสินประเภทตัวแปรและคำสั่ง typeof ส่งคืนสตริงที่สอดคล้องกับประเภท
2. ใช้คำสั่งอินสแตนซ์ของการตัดสินประเภทตัวแปรและคำสั่งอินสแตนซ์ของการส่งคืนจริง/เท็จ
3. ใช้แอตทริบิวต์ตัวสร้างเพื่อกำหนดประเภทตัวแปรซึ่งส่งคืนการอ้างอิงตัวสร้างที่ใช้ในการสร้างตัวแปร
ตารางเปรียบเทียบ: จะเห็นได้ว่าการใช้ typeof ไม่สามารถกำหนดประเภทเฉพาะได้อย่างถูกต้องดังนั้นเราจึงใช้ตัวสร้างเพื่อทำการตัดสิน
typeofstringNumberObjectFunctionBooleanObject
ConstructorStringNumberObjectFunctionBooleanArrayuser กำหนด
การคัดลอกรหัสมีดังนี้:
<script type = "text/javascript">
ฟังก์ชันเพิ่ม ()
-
if (arguments.length == 0) return 0;
var sum = 0;
สำหรับ (var i = 0; i <arguments.length; i ++) {
if (อาร์กิวเมนต์ [i] .constructor == number) {
// หรือเปลี่ยนเป็น: ถ้า (อาร์กิวเมนต์ [i] หมายเลขอินสแตนซ์ของหมายเลข)
// หรือเปลี่ยนเป็น: ถ้า (typeof (อาร์กิวเมนต์ [i]) == "number")
sum += อาร์กิวเมนต์ [i];
-
-
ผลรวมกลับ;
-
// ฟังก์ชั่นโทร
การแจ้งเตือน (เพิ่ม (10));
การแจ้งเตือน (เพิ่ม (10,20));
</script>
คุณเข้าใจวิธีการใช้ฟังก์ชัน JavaScript มากเกินไปหรือไม่? หากคุณมีคำถามใด ๆ โปรดฝากข้อความ