انظر أولاً إلى رمز المصدر لدينا.
نسخة الكود كما يلي:
<! doctype html>
<html>
<head>
<meta charset = "utf-8" />
<title> فهم متعمق لـ JavaScript </title>
<script type = "text/javaScript" charset = "utf-8">
console.log (هذا) ؛
</script>
</head>
<body>
<h1> فهم متعمق لـ JavaScript </h1>
</body>
</html>
نحن نعلم أنه إذا فتحت هذه الصفحة من خلال متصفح ، فسيتم تنفيذ البرامج النصية الموجودة في علامة </script>.
ثم دعونا نلقي نظرة على console.log (هذا) ؛ من الذي هذا النقطة؟
في Google Chrome نرى:
في Mozilla Firefox نرى:
نرى جميعًا نافذة الإخراج ، فهل النافذة والنوافذ متساوية؟
بعد اختبارنا
نسخة الكود كما يلي:
<script type = "text/javaScript" charset = "utf-8">
console.log (هذا) ؛
console.log ('هذا == نافذة؟' ، هذا == نافذة) ؛
</script>
قم بتشغيل الكود وإخراج هذا النافذة == صحيح ، مما يعني نافذة == نافذة. هل هذا هو الحال حقا؟
لمعرفة العلاقة بينهما ، نواصل الاختبار
نسخة الكود كما يلي:
<script type = "text/javaScript" charset = "utf-8">
console.log ('هذا =' ، هذا) ؛
console.log ('هذا == نافذة؟' ، هذا == نافذة) ؛
console.log ('window =' ، window) ؛
console.log ('window =' ، window)
console.log ("نافذة == نافذة؟" ، نافذة == نافذة)
</script>
عرض إخراج المتصفح:
جوجل كروم:
موزيلا فايرفوكس:
من نتائج الإخراج يمكننا استنتاج ،
نسخة الكود كما يلي:
هذا هو كائن نافذة.
هذا يساوي أيضا كائن النافذة.
يشير النافذة أيضًا إلى كائنات النوافذ ؛
النافذة تشير إلى نافذة {} ، وهو كائن يوفره المتصفح ؛
النافذة لا تساوي النافذة.
لماذا هذا يحدث؟
ننظر إلى بنية كائنات النوافذ في وحدة التحكم في المتصفح ؛
اتضح أن كائن النافذة يحتوي على بعض واجهات برمجة التطبيقات التي يتم تنفيذها من قبل مصنعي المتصفح ، مثل SessionStorage القياسي في HTML5 ؛
كما أن لديها خاصية نافذة ، وتشير قيمة هذه الخاصية إلى كائن النافذة ؛
أفهم: كائنات النوافذ تخدم مصنعي المتصفح. لا يمكننا معالجة خصائص كائنات النوافذ مباشرة. سوف تنعكس واجهات برمجة تطبيقات النافذة المضافة حديثًا في كائن النافذة ؛
سوف تنعكس الخصائص التي نعملها على النافذة في كائن النافذة.
على سبيل المثال ، حدد نافذة متغيرة عالمية. a = 'aaa' ؛
توجد جميع الكائنات في JavaScript في بيئة جارية ، والتي هي أيضًا كائن ، يسمى "كائن المستوى الأعلى". هذا يعني أن جميع الكائنات في JavaScript هي مرؤوسين لـ "الكائنات ذات المستوى الأعلى". تحتوي بيئات التشغيل المختلفة على "كائنات ذات مستوى أعلى". في بيئة المتصفح ، هذا الكائن من المستوى الأعلى هو كائن نافذة.
جميع المتغيرات العالمية لبيئة المتصفح هي خصائص لكائنات النوافذ.
يمكن فهم Windows على أنها بيئة سياق JavaScriptContext.