هناك خصائصان خاصتان داخل الوظيفة: الوسائط وهذا. الوسائط هي كائن صفيف للفئة التي تحتوي على جميع المعلمات التي تم تمريرها.
لكن هذا الكائن يحتوي أيضًا على خاصية تسمى Callee ، وهي مؤشر إلى وظيفة تمتلك كائن الوسائط.
يرجى الاطلاع على مثال الوظيفة العليا الكلاسيكية:
نسخة الكود كما يلي:
وظيفة Factorial (num) {
if (num <= 1) {
العودة 1 ؛
} آخر {
إرجاع num * factorial (num - 1) ؛
}
}
وظيفة Factorial (num) {
if (num <= 1) {
العودة 1 ؛
} آخر {
إرجاع num * ediuments.callee (num - 1) ؛
}
}
لا حرج في استخدام الطريقة الأولى ، لكن الاقتران مرتفع للغاية وليس جيدًا. بعد تغيير اسم الوظيفة ، يجب أيضًا تغيير اسم الوظيفة الداخلية.
الطريقة الثانية هي اقتران منخفض ، بغض النظر عن تغيير اسم الوظيفة ، لن يؤثر على تنفيذ الوظيفة.
يشير هذا إلى كائن البيئة الذي يتم تنفيذ الوظيفة عليه ، أو يمكن القول أيضًا أنها هذه القيمة.
نسخة الكود كما يلي:
Window.Color = "Red" ؛
var o = {color: "Blue"} ؛
وظيفة sexercolor () {
تنبيه (this.color) ؛
}
saycolor () ؛ // الأحمر
O.Saycolor = saycolor ؛
O.Saycolor () ؛ // الأزرق
تحتوي سمة المتصل على إشارة إلى الوظيفة التي تستدعي الوظيفة الحالية. إذا تم استدعاء الوظيفة الحالية في النطاق العالمي ، فإن قيمتها خالية
نسخة الكود كما يلي:
وظيفة OUTER () {
المبتد () ؛
}
وظيفة inner () {
//alert(innter.caller) ؛//the اقتران مرتفع جدًا
التنبيه (الحجج. callee.caller) ؛
}
Outer () ؛
ما سبق هو كل محتوى الخصائص الداخلية لوظائف JavaScript. أتمنى أن تعجبك