1. المتصل
إرجاع إشارة إلى الوظيفة التي تستدعي الوظيفة الحالية.
FunctionName.Caller
كائن FunctionName هو اسم الوظيفة المنفذة.
يوضح
بالنسبة للوظائف ، يتم تعريف سمة المتصل فقط عند تنفيذ الوظيفة. إذا تم استدعاء الوظيفة من خلال المستوى الأعلى لبرنامج JavaScript ، فإن المتصل يحتوي على NULL.
يوضح المثال التالي استخدام سمة المتصل:
نسخة الكود كما يلي:
وظيفة callerdemo () {
إذا (الحجج. caller) {
var a = callerdemo.caller.toString () ؛
تنبيه (أ) ؛
} آخر {
تنبيه ("هذه وظيفة أعلى") ؛
}
}
وظيفة HandleCaller () {
callerdemo () ؛
}
HandleCaller () ؛
وظيفة calleedemo () {
تنبيه (الحجج. callee) ؛
}
Calleedemo () ؛
2. كالي
إرجاع كائن الوظيفة الذي يتم تنفيذه ، أي جسم كائن الوظيفة المحدد.
[وظيفة.] الحجج
معلمة الوظيفة الاختيارية هي اسم كائن الوظيفة الذي ينفذ حاليًا.
يوضح
القيمة الأولية لخاصية Callee هي كائن الوظيفة الذي يتم تنفيذه.
خاصية Callee هي عضو في كائن الوسائط ، والذي يمثل إشارة إلى كائن الوظيفة نفسه ، والذي يفضي إلى عودة الوظائف المجهولة أو لضمان تغليف الوظيفة. على سبيل المثال ، الحساب العودية لمجموع الأرقام الطبيعية من 1 إلى N في المثال التالي. هذه الخاصية متوفرة فقط عند تنفيذ الوظيفة ذات الصلة. من المهم أيضًا ملاحظة أن Callee لديه سمة الطول ، والتي تكون في بعض الأحيان أفضل للتحقق. الوسائط. الطول هو طول المعلمة الفعلية ، والوسائط. callee.length هو طول المعلمة الرسمية. يمكن استخدام هذا لتحديد ما إذا كان طول المعلمة الرسمية متسقًا مع طول المعلمة الفعلية عند الاتصال.
مثال
نسخة الكود كما يلي:
// يمكن لطباعة نفسها
وظيفة calleedemo () {
تنبيه (الحجج. callee) ؛
}
// تستخدم للتحقق من المعلمات
دالة CalleelLengthDemo (Arg1 ، Arg2) {
if (ediuments.length == ediuments.callee.length) {
Window.Alert ("تحقق من أن المعلمات الرسمية والمعلمات الفعلية صحيحة!") ؛
يعود؛
} آخر {
تنبيه ("طول الوسيطة الحقيقية:" +ediuments.length) ؛
التنبيه ("طول الحجم:" +ediuments.callee.length) ؛
}
}
// حساب العودية
var sum = function (n) {
إذا (n <= 0)
العودة 1 ؛
آخر
return n + edguments.callee (n - 1)
}
وظيفة عودية أكثر عمومية:
نسخة الكود كما يلي:
var sum = function (n) {
إذا (1 == n) العودة 1 ؛
عودة أخرى n + sum (n-1) ؛
عند استدعاء: ALERT (SUM (100)) ؛
تحتوي الوظيفة على إشارة إلى المبلغ نفسه. اسم الوظيفة هو مجرد اسم متغير. استدعاء المبلغ داخل الوظيفة يعادل الاتصال
لا يمكن أن ينعكس المتغير العالمي بشكل جيد في المكالمة نفسها ، وسيكون استخدام Callee طريقة أفضل في هذا الوقت.