ใน JavaScript ฟังก์ชั่นฟังก์ชั่นเป็นวัตถุ
ไม่มีวิธีการโอเวอร์โหลดใน JS
ใน JavaScript ไม่มีแนวคิดของวิธีการ (ฟังก์ชั่น) มากเกินไป
ตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
<html>
<head>
<script type = "text/javascript">
ฟังก์ชันเพิ่ม (หมายเลข)
-
การแจ้งเตือน (หมายเลข + 20);
-
เพิ่มฟังก์ชั่น (หมายเลข, หมายเลข 1)
-
การแจ้งเตือน (หมายเลข + 30);
-
เพิ่ม (10);
</script>
</head>
<body>
</body>
</html>
กล่องกระสุนในหน้าเว็บแสดง 40
คำอธิบายแม้ว่าวิธีที่สองคือพารามิเตอร์สองตัว แต่ก็ยังเรียกว่า
หลังจากแลกเปลี่ยนคำสั่งของทั้งสองวิธีแล้วกล่องป๊อปอัพจะแสดง 30 มันจะเห็นได้ว่าไม่ว่าจะเป็นจำนวนพารามิเตอร์วิธีการต่อไปนี้ที่มีชื่อเดียวกันเรียกว่า
จะอธิบายปรากฏการณ์นี้ได้อย่างไร?
นี่เป็นเพราะการประกาศฟังก์ชั่นสร้างวัตถุจริง ๆ :
การคัดลอกรหัสมีดังนี้:
<html>
<head>
<script type = "text/javascript">
ฟังก์ชันเพิ่ม (หมายเลข)
-
การแจ้งเตือน (หมายเลข + 20);
-
-
ฟังก์ชั่นข้างต้นเทียบเท่ากับ:
var add = function (number)
-
การแจ้งเตือน (หมายเลข + 20);
-
-
เพิ่มฟังก์ชั่น (หมายเลข, หมายเลข 1)
-
การแจ้งเตือน (หมายเลข + 30);
-
-
ฟังก์ชั่นข้างต้นเทียบเท่ากับ:
var add = function (number, number1)
-
การแจ้งเตือน (หมายเลข + 30);
-
-
เพิ่ม (10);
</script>
</head>
<body>
</body>
</html>
ด้วยวิธีนี้เพิ่มชี้ไปที่วัตถุที่ตามมาและพารามิเตอร์ที่กำหนดเมื่อวิธีการที่เรียกว่าจะถูกกำหนดให้กับพารามิเตอร์อย่างเป็นทางการตามลำดับและพารามิเตอร์ที่ไม่ได้กำหนดหลังจากนั้นไม่ได้กำหนด
เมื่อเรียกใช้ฟังก์ชัน JavaScript จะไม่มีการตรวจสอบจำนวนพารามิเตอร์อย่างเข้มงวด มันก็โอเคที่จะมีจำนวนพารามิเตอร์จริงที่เล็กกว่าจำนวนพารามิเตอร์ที่เป็นทางการ พารามิเตอร์ที่เป็นทางการที่ไม่ได้กำหนดคือค่าที่ไม่ได้กำหนด
นอกจากนี้ยังเป็นไปได้ว่าจำนวนพารามิเตอร์จริงมากกว่าจำนวนพารามิเตอร์ที่เป็นทางการ ด้วยวิธีนี้จะใช้เฉพาะพารามิเตอร์จริงก่อนหน้านี้และจะไม่ใช้พารามิเตอร์จริงเพิ่มเติม
วัตถุฟังก์ชัน
มีวัตถุฟังก์ชันใน JavaScript และฟังก์ชั่นที่กำหนดเองทั้งหมดเป็นประเภทวัตถุฟังก์ชัน
พารามิเตอร์ทั้งหมดที่ได้รับจากวัตถุฟังก์ชั่นเป็นประเภทสตริงพารามิเตอร์สุดท้ายคือร่างกายฟังก์ชันที่จะดำเนินการและพารามิเตอร์ก่อนหน้าคือพารามิเตอร์ที่ฟังก์ชันต้องได้รับจริงๆ
ตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
<html>
<head>
<script type = "text/javascript">
var add = new function ("number", "number1", "การแจ้งเตือน (หมายเลข + number1);");
var add = new function ("number", "การแจ้งเตือน (หมายเลข + 20);");
เพิ่ม (10, 30);
</script>
</head>
<body>
</body>
</html>
อาร์กิวเมนต์วัตถุโดยนัย
ใน JavaScript แต่ละฟังก์ชั่นมีอาร์กิวเมนต์วัตถุโดยนัยซึ่งแสดงถึงพารามิเตอร์ที่ส่งผ่านไปยังฟังก์ชันจริง
อาร์กิวเมนต์ไม่มีส่วนเกี่ยวข้องกับพารามิเตอร์อย่างเป็นทางการของฟังก์ชันและจำนวนของพวกเขา
อาร์กิวเมนต์มีความยาวแอตทริบิวต์ที่มีประโยชน์ซึ่งระบุความยาวของพารามิเตอร์จริง คุณสามารถใช้สิ่งนี้เพื่อจำลองการโอเวอร์โหลดของฟังก์ชั่น:
ตัวอย่างการออกกำลังกาย:
การคัดลอกรหัสมีดังนี้:
<html>
<head>
<script type = "text/javascript">
เพิ่มฟังก์ชั่น (number1, number2)
-
การแจ้งเตือน (อาร์กิวเมนต์ความยาว);
การแจ้งเตือน (อาร์กิวเมนต์ [0]);
การแจ้งเตือน (อาร์กิวเมนต์ [1]);
การแจ้งเตือน (อาร์กิวเมนต์ [2]);
-
// เพิ่ม (2, 3, 4);
ฟังก์ชั่น add2 ()
-
ถ้า (1 == อาร์กิวเมนต์ความยาว)
-
การแจ้งเตือน (อาร์กิวเมนต์ [0]);
-
อื่นถ้า (2 == อาร์กิวเมนต์ความยาว)
-
การแจ้งเตือน (อาร์กิวเมนต์ [0] + อาร์กิวเมนต์ [1]);
-
อื่นถ้า (3 == อาร์กิวเมนต์ความยาว)
-
การแจ้งเตือน (อาร์กิวเมนต์ [0] + อาร์กิวเมนต์ [1] + อาร์กิวเมนต์ [2]);
-
-
add2 (3);
add2 (3, 4);
add2 (3, 4, 5);
</script>
</head>
<body>
</body>
</html>
วัตถุฟังก์ชั่นแต่ละรายการมีแอตทริบิวต์ความยาวซึ่งระบุรูปแบบพารามิเตอร์ที่ฟังก์ชั่นคาดว่าจะได้รับ
มันแตกต่างจากอาร์กิวเมนต์ของฟังก์ชัน อาร์กิวเมนต์ความยาวแสดงจำนวนพารามิเตอร์ที่ได้รับจริงโดยฟังก์ชั่น
ตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
<html>
<head>
<script type = "text/javascript">
var add = function (num, num2, num3)
-
การแจ้งเตือน (num + num2 + num3);
-
การแจ้งเตือน (add.length); // เอาต์พุต 3
เพิ่ม (1, 2, 3);
var add2 = function ()
-
-
การแจ้งเตือน (add2.length); // เอาท์พุท 0
</script>
</head>
<body>
</body>
</html>