มีคุณสมบัติพิเศษสองประการภายในฟังก์ชั่น: อาร์กิวเมนต์และสิ่งนี้ อาร์กิวเมนต์เป็นวัตถุอาร์เรย์ของคลาสที่มีพารามิเตอร์ทั้งหมดที่ส่งผ่าน
แต่วัตถุนี้ยังมีคุณสมบัติที่เรียกว่า Callee ซึ่งเป็นตัวชี้ไปยังฟังก์ชั่นที่เป็นเจ้าของวัตถุอาร์กิวเมนต์
โปรดดูตัวอย่างฟังก์ชั่นแฟคทอเรียลคลาสสิก:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นแฟคทอเรียล (NUM) {
ถ้า (num <= 1) {
กลับ 1;
} อื่น {
ส่งคืน num * factorial (num - 1);
-
-
ฟังก์ชั่นแฟคทอเรียล (NUM) {
ถ้า (num <= 1) {
กลับ 1;
} อื่น {
return num * arguments.callee (num - 1);
-
-
ไม่มีอะไรผิดปกติกับการใช้วิธีแรก แต่การมีเพศสัมพันธ์สูงเกินไปและไม่ดีมาก หลังจากเปลี่ยนชื่อฟังก์ชั่นชื่อฟังก์ชันภายในจะต้องเปลี่ยน
วิธีที่สองคือการมีเพศสัมพันธ์ต่ำไม่ว่าชื่อฟังก์ชั่นจะเปลี่ยนไปอย่างไรมันจะไม่ส่งผลกระทบต่อการดำเนินการฟังก์ชั่น
สิ่งนี้หมายถึงวัตถุสภาพแวดล้อมที่ใช้งานฟังก์ชั่นหรืออาจกล่าวได้ว่าเป็นค่านี้
การคัดลอกรหัสมีดังนี้:
window.color = "สีแดง";
var o = {color: "blue"};
ฟังก์ชั่น sayscolor () {
การแจ้งเตือน (this.color);
-
saycolor (); // สีแดง
O.SayColor = SayColor;
O.SayColor (); // สีน้ำเงิน
แอตทริบิวต์ผู้โทรมีการอ้างอิงถึงฟังก์ชั่นที่เรียกฟังก์ชันปัจจุบัน หากฟังก์ชั่นปัจจุบันถูกเรียกในขอบเขตทั่วโลกค่าของมันจะเป็นโมฆะ
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นด้านนอก () {
อินเทอร์ ();
-
ฟังก์ชั่น inner () {
//alert( inter.caller);///the coupling สูงเกินไป
การแจ้งเตือน (arguments.callee.caller);
-
ด้านนอก ();
ข้างต้นเป็นเนื้อหาทั้งหมดของคุณสมบัติภายในของฟังก์ชัน JavaScript ฉันหวังว่าคุณจะชอบมัน