ترجمة ECMA-262-3 الفصل الأول : سياقات التنفيذ


هذه المقالة ترجمة ECMA-262-3 in detail Chapter1. Executions Contexts للكاتب Dmitry A. Soshnikov

1- مقدمة
2- تعريفات
3- أنواع الكود القابل للتنفيذ
كود ال global
كود الوظائف
كود الوظيفة eval
4- إستنتاج
5- المزيد

مقدمة

فى هذا المقال سأقوم بذكر أنواع سياقات التنفيذ execution contexts ب ECMAScript و أنواع الكود القابل للتنفيذ المرتبط بهم .

تعريفات

فى كل مرة ينتقل فيها التحكم إلى كود قابل للتنفيذ فى ECMAScript فإن الكود يدخل فى سياق للتنفيذ execution context. سياق التنفيذ execution context إختصارا EC هو مفهوم تجريدى تستخدمه مواصفات ال ECMAScript لتصنيف وتمييز الأكواد القابلة للتنفيذ.

منطقيا , مجموعة من سياقات التنفيذ النشطة تقوم بتشكيل stack ، أسفل هذا ال Stack غالبا ما يكون السياق الشامل global context ، أما بالأعلى فيكون سياق التنفيذ النشط الحالى . يتم تعديل ال stack – يضاف إلى و يحذف من أعلاه – خلال الدخول إلى و الخروج من أنواع سياقات التنفيذ المختلفة .

أنواع الكود القابل للتنفيذ

مع هذا المفهود التجريدى لسياق التنفيذ ، نوع الكود القابل للتنفيذ executable code مرتبط به . عند الحديث عن نوع الكود فإنه من الممكن فى بعض الأوقات ان نقصد به سياق التنفيذ.

فى الأمثلة سنعرف stack سياقات التنفيذ كمصفوفة :

ECStack = [];

يتم الإضافة إلى هذا ال stack فى كل مرة عند دخول وظيفة حتى إذا إستدعت هذه الوظيفة نفسها recursively أو كانت constructor ، و إيضا عند تنفيذ كود من خلال الوظيفة eval .

كود ال global

هذا النوع من الكود الذى يتم تنفيذه فى مستوى البرنامج مباشرة داخل ال script tag او الذى يتم تحميلة من ملف خارجى خارج أى وظيفة ، عندما يتم بدأ تطبيق البرنامج فإن ال ECStack يبدو هكذا :

ECStack = [
    globalContext
];

كود ال Function

عند دخول كود الوظيفة (كل أنواع الوظائف) ، فإن ال ECStack يتم الإضافة عليها عناصر جديدة ، من المهم ان تلاحظ ان سياق كود الوظيفة لا يضمن سياق الوظائف الداخلية ، على سبيل المثال هذه الوظيفة تستدعى نفسها مرة واحدة فقط :

(function foo(bar) {
if (bar) {
return;
}
foo(true);
})();

التعديلات التى تطرأ على ECStack :

// عند دخول foo لأول مرة لتنفيذ الكود
ECStack = [
  <foo> functionContext
  globalContext
];

// عندما نادت foo نفسها
ECStack = [
  <foo> functionContext – recursively
  <foo> functionContext
  globalContext
];

كل return تقوم بالخروج من سياق التنفيذ الحالى و بالتالى يتم حذف أعلى عنصر فى ال ECStack بالتوالى من أعلى إلى أسفل . و أيضا الإستثناء الذى يتم طرحه ولا يوجد كود لإلتقاته يتسبب فى الخروج من واحد او كثر من سياقات التنفيذ حتى يتم إلتقاته و معالجته ، بعد انتهاء عمل هذا الكود فإن ال ECStack مرة أخرى يحتوى على السياق الشامل globalContext فقط حتى إنتهاء البرنامج .

كود الوظيفة eval

الأمور أكثر إثارة عندما نتحدث عن كود ال eval ، ينشأ هنا مفهوم سياق الإستدعاء calling context السياق الذى يتم منه إستدعاء الوظيفة eval ، حيث ان التأثير الذى تحدثه الوظيفة eval مثل انشاء المتغيرات و الدوال يؤثر على سياق الإستدعاء :

eval('var x = 10');

(function foo() {
  eval('var y = 20');
})();

alert(x); // 10
alert(y); // "y" is not defined

التعديلات التى تطرأ على ECStack :


ECStack = [
  globalContext
];

// eval('var x = 10');
ECStack.push(
  evalContext,
  callingContext: globalContext
);

// eval خرجت من السياق
ECStack.pop();

// عند إستدعاء الوظيفة foo
ECStack.push(<foo> functionContext);

// eval('var y = 20');
ECStack.push(
  evalContext,
  callingContext: <foo> functionContext
);

// الإنتهاء من تنفيذ eval
ECStack.pop();

// الإنتهاء من تنفيذ foo
ECStack.pop();

فى SpiderMonkey محرك ترجمة الجافاسكربت الموجود فى فايرفوكس و سندربرد لغاية النسخة 1.7 من الممكن تمرير عبارة تانية للوظيفة eval لكى تمثل سياق الإستدعاء calling context ، ومن الممكن عن طرق ذلك التأثير على المتغيرات الخاصة كما يسميها البعض :

function foo() {
  var x = 1;
  return function () { alert(x); };
};

var bar = foo();

bar(); // 1

// تمرير سياق الإستدعاء للتأثير على المتغير الداخلى إكس
eval('x = 2', bar);

bar(); // 2

إستنتاج

هذه المعالجة النظرية مطلوبة لمزيد من التحليل لتفاصيل المواضيع الاخرى المرتبطة بسياقات التنفيذ مثل كائن المتغير Variable object و سلسلة المدى scope chain … الخ .

للمزيد

القسم المقابل فى مواصفات ECMA-262-3  Execution Contexts

About these ads

الأوسمة: , ,

14 تعليقات to “ترجمة ECMA-262-3 الفصل الأول : سياقات التنفيذ”

  1. ECMA-262 by Dmitry A. Soshnikov » ECMA-262-3 in detail. Chapter 1. Execution Contexts. Says:

    [...] this article in: Russian, Chinese, Arabic. IntroductionDefinitionsTypes of executable codeGlobal codeFunction codeEval [...]

  2. ECMA-262 by Dmitry A. Soshnikov » Тонкости ECMA-262-3. Часть 2. Объект переменных. Says:

    [...] this article in: English, Chinese, Arabic. ВведениеОбъявление данныхКонкретизация объекта [...]

  3. ECMA-262 by Dmitry A. Soshnikov » Тонкости ECMA-262-3. Часть 1. Контексты исполнения. Says:

    [...] this article in: English, Chinese, Arabic. ВведениеОпределенияТипы исполняемого [...]

  4. Tweets that mention ترجمة ECMA-262-3 الفصل الأول : سياقات التنفيذ « Keepondev -- Topsy.com Says:

    [...] This post was mentioned on Twitter by Dmitry A. Soshnikov and Mostafa Farghaly, Mostafa Farghaly. Mostafa Farghaly said: ترجمة ECMA-262-3 الفصل الإول : سياقات التنفيذ http://bit.ly/cxJDQj [...]

  5. ترجمة ECMA-262-3 الفصل الأول : سياقات التنفيذ | الخلاصات العربية Says:

    [...] : سياقات التنفيذ هذا المقال أستخلص من مدونة Keepondev ، ومن هنا يمكنك الإطلاع على المقال [...]

  6. ترجمة ECMA-262-3 الفصل الأول : سياقات التنفيذ | الخلاصات العربية Says:

    [...] 1- مقدمة 2- تعريفات 3- أنواع الكود القابل للتنفيذ كود ال global كود الوظائف كود الوظيفة eval 4- إستنتاج 5- المزيد [...]

  7. ترجمة ECMA-262-3 الفصل الأول : سياقات التنفيذ | الخلاصات العربية Says:

    [...] مقدمة 2- تعريفات 3- أنواع الكود القابل للتنفيذ كود ال global كود الوظائف [...]

  8. ترجمة ECMA-262-3 الفصل الأول : سياقات التنفيذ | الخلاصات العربية Says:

    [...] مقدمة 2- تعريفات 3- أنواع الكود القابل للتنفيذ كود ال global كود الوظائف كود الوظيفة eval 4- إستنتاج 5- [...]

  9. ترجمة ECMA-262-3 الفصل الأول : سياقات التنفيذ | الخلاصات العربية Says:

    [...] 2- تعريفات 3- أنواع الكود القابل للتنفيذ كود ال global كود الوظائف كود الوظيفة eval 4- إستنتاج 5- [...]

  10. ترجمة ECMA-262-3 الفصل الأول : سياقات التنفيذ | الخلاصات العربية Says:

    [...] القابل للتنفيذ كود ال global كود الوظائف كود الوظيفة eval 4- إستنتاج 5- [...]

  11. ترجمة ECMA-262-3 الفصل الأول : سياقات التنفيذ | الخلاصات العربية Says:

    [...] 1- مقدمة 2- تعريفات 3- أنواع الكود القابل للتنفيذ كود ال global كود الوظائف كود الوظيفة eval 4- إستنتاج 5- المزيد [...]

  12. mounjidsoft Says:

    goooode
    best weshes

  13. ترجمة ECMA-262-3 الفصل الأول : سياقات التنفيذ « « Says:

    [...] مقدمة 2- تعريفات 3- أنواع الكود القابل للتنفيذ كود ال global كود الوظائف [...]

  14. ترجمة ECMA-262-3 الفصل الأول : سياقات التنفيذ « « Says:

    [...] 1- مقدمة 2- تعريفات 3- أنواع الكود القابل للتنفيذ كود ال global كود الوظائف كود الوظيفة eval 4- إستنتاج 5- المزيد [...]

أضف تعليق

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

You are commenting using your WordPress.com account. تسجيل خروج   / تغيير )

Twitter picture

You are commenting using your Twitter account. تسجيل خروج   / تغيير )

Facebook photo

You are commenting using your Facebook account. تسجيل خروج   / تغيير )

Google+ photo

You are commenting using your Google+ account. تسجيل خروج   / تغيير )

Connecting to %s


تابع

Get every new post delivered to your Inbox.

%d bloggers like this: