1. ผู้โทร
ส่งคืนการอ้างอิงไปยังฟังก์ชั่นที่เรียกฟังก์ชันปัจจุบัน
functionName.Caller
วัตถุ FunctionName คือชื่อของฟังก์ชั่นที่ดำเนินการ
อธิบาย
สำหรับฟังก์ชั่นแอตทริบิวต์ผู้โทรจะถูกกำหนดเฉพาะเมื่อฟังก์ชั่นถูกเรียกใช้งานเท่านั้น หากฟังก์ชั่นถูกเรียกโดยระดับบนสุดของโปรแกรม JavaScript ผู้โทรจะมี NULL
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้แอตทริบิวต์ผู้โทร:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น callerDemo () {
if (arguments.caller) {
var a = callerdemo.caller.toString ();
การแจ้งเตือน (a);
} อื่น {
การแจ้งเตือน ("นี่คือฟังก์ชั่นด้านบน");
-
-
ฟังก์ชั่น handlecaller () {
CallerDemo ();
-
HandleCaller ();
ฟังก์ชั่น calleedemo () {
การแจ้งเตือน (arguments.callee);
-
Calleedemo ();
2. Callee
ส่งคืนวัตถุฟังก์ชั่นที่ถูกดำเนินการนั่นคือร่างกายของวัตถุฟังก์ชันที่ระบุ
[ฟังก์ชั่น.] อาร์กิวเมนต์ callee
พารามิเตอร์ฟังก์ชั่นเสริมคือชื่อของวัตถุฟังก์ชันที่กำลังดำเนินการอยู่
อธิบาย
ค่าเริ่มต้นของคุณสมบัติ Callee คือวัตถุฟังก์ชันที่ดำเนินการ
คุณสมบัติ Callee เป็นสมาชิกของวัตถุอาร์กิวเมนต์ซึ่งแสดงถึงการอ้างอิงถึงวัตถุฟังก์ชันเองซึ่งเอื้อต่อการเรียกซ้ำของฟังก์ชั่นที่ไม่ระบุชื่อหรือเพื่อให้แน่ใจว่าการห่อหุ้มของฟังก์ชั่น ตัวอย่างเช่นการคำนวณแบบเรียกซ้ำของผลรวมของตัวเลขธรรมชาติจาก 1 ถึง N ในตัวอย่างต่อไปนี้ คุณสมบัตินี้จะใช้ได้เฉพาะเมื่อมีการดำเนินการฟังก์ชั่นที่เกี่ยวข้อง นอกจากนี้ยังเป็นสิ่งสำคัญที่จะต้องทราบว่า Callee มีแอตทริบิวต์ความยาวซึ่งบางครั้งดีกว่าสำหรับการตรวจสอบ อาร์กิวเมนต์ความยาวคือความยาวของพารามิเตอร์จริงและอาร์กิวเมนต์ callee.length คือความยาวของพารามิเตอร์ที่เป็นทางการ สิ่งนี้สามารถใช้เพื่อตรวจสอบว่าความยาวของพารามิเตอร์อย่างเป็นทางการสอดคล้องกับความยาวของพารามิเตอร์จริงเมื่อโทรหรือไม่
ตัวอย่าง
การคัดลอกรหัสมีดังนี้:
// Callee สามารถพิมพ์ได้เอง
ฟังก์ชั่น calleedemo () {
การแจ้งเตือน (arguments.callee);
-
// ใช้เพื่อตรวจสอบพารามิเตอร์
ฟังก์ชั่น calleelengthdemo (arg1, arg2) {
if (arguments.length == arguments.callee.length) {
window.alert ("ตรวจสอบว่าพารามิเตอร์ที่เป็นทางการและพารามิเตอร์จริงถูกต้อง!");
กลับ;
} อื่น {
การแจ้งเตือน ("ความยาวอาร์กิวเมนต์จริง:" +อาร์กิวเมนต์ความยาว);
การแจ้งเตือน ("ความยาวขนาด:" +อาร์กิวเมนต์. callee.length);
-
-
// การคำนวณแบบเรียกซ้ำ
var sum = function (n) {
ถ้า (n <= 0)
กลับ 1;
อื่น
return n + arguments.callee (n - 1)
-
ฟังก์ชั่นการเรียกซ้ำทั่วไปมากขึ้น:
การคัดลอกรหัสมีดังนี้:
var sum = function (n) {
ถ้า (1 == n) กลับ 1;
อื่น ๆ ส่งคืน n + sum (n-1);
เมื่อเรียกว่า: แจ้งเตือน (ผลรวม (100));
ฟังก์ชั่นมีการอ้างอิงถึงผลรวมของตัวเอง ชื่อฟังก์ชั่นเป็นเพียงชื่อตัวแปร การเรียกผลรวมภายในฟังก์ชั่นเทียบเท่ากับการโทร
ตัวแปรทั่วโลกไม่สามารถสะท้อนได้ดีในการโทรและการใช้ Callee จะเป็นวิธีที่ดีกว่าในเวลานี้