الفرق بين المراجعتين لصفحة: «JavaScript/arguments/callee»
لا ملخص تعديل |
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
||
سطر 57: | سطر 57: | ||
* معيار [http://www.ecma-international.org/ecma-262/5.1/#sec-10.6 ECMAScript 5.1]. | * معيار [http://www.ecma-international.org/ecma-262/5.1/#sec-10.6 ECMAScript 5.1]. | ||
* معيار [http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf ECMAScript 1st Edition] . | * معيار [http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf ECMAScript 1st Edition] . | ||
[[تصنيف:JavaScript]] | [[تصنيف:JavaScript|{{SUBPAGENAME}}]] | ||
[[تصنيف:JavaScript Global Objects]] | [[تصنيف:JavaScript Global Objects|{{SUBPAGENAME}}]] | ||
[[تصنيف:JavaScript Functions]] | [[تصنيف:JavaScript Functions|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 15:40، 28 يناير 2018
الخاصية arguments.callee
تشير إلى الدالة التي تُنفَّذ حاليًا.
الوصف
الخاصية callee
التابعة للكائن arguments
تُشير إلى الدالة التي تُنفَّذ حاليًا داخل جسم تلك الدالة، وهذا مفيدٌ في حال كان اسم الدالة ليس معروفًا، مثل تعابير تعريف الدوال دون اسم (يُطلَق عليها أيضًا اسم «الدوال المجهولة» [anonymous functions]).
تحذير: الإصدار الخامس من ECMAScript (أي ES5) يمنع استخدام الخاصية arguments.callee
في نمط strict، تفادى استخدام هذه الخاصية بإعطاء اسم لتعابير تعريف الدوال أو التصريح عن دالة باستخدام تعابير التصريح عن الدوال.
أمثلة
استخدام arguments.callee
في دالة مجهولة تعاودية
يجب أن تستطيع الدوال التعاودية (recursive functions) أن تشير إلى نفسها، وعادةً تُشير الدالة إلى نفسها باسمها، لكن في حالة الدوال المجهولة (كالتي أنُشِئ من تعبير تعريف الدوال أو الدالة البانية Function) فلن يكون لها اسم؛ وبالتالي إن لم تملك وصولًا إلى المتغير الذي يُشير إليها، فستكون الطريقة الوحيدة التي تستطيع الدالة أن تُشير فيها إلى نفسها هي باستخدام الخاصية arguments.callee
.
المثال الآتي يُعرِّف دالةً التي تُعيد دالةً أخرى التي تستدعي نفسها تعاوديًا، لاحظ أنَّ المثال الآتي غير عملي، ويمكن الاستعاضة عنه بتعابير تعريف الدوال مع تحديد اسم للدالة:
function create() {
return function(n) {
if (n <= 1)
return 1;
return n * arguments.callee(n - 1);
};
}
var result = create()(5); // 120 (5 * 4 * 3 * 2 * 1)
استخدام arguments.callee
دون بدائل
في المثال الآتي لا توجد بدائل أفضل من استخدام الخاصية arguments.callee
:
function createPerson(sIdentity) {
var oPerson = new Function('alert(arguments.callee.identity);');
oPerson.identity = sIdentity;
return oPerson;
}
var john = createPerson('Bashir Ameen');
john();
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | نعم | نعم | 6 | نعم | نعم |
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).
- معيار ECMAScript 5.1.
- معيار ECMAScript 1st Edition .