لقد استخدمت هذا خلال المقابلة قبل بضعة أيام. قال القائم بإجراء المقابلة أن فهمي كان متحيزًا بعض الشيء. عدت لقراءة الكتاب وبعض المدونات ، وقمت ببعض الاختبارات. لقد وجدت أن فهمي كان خطأ بالفعل.
1. المتغيرات العالمية
يجب أن يكون الأكثر استخداما واحد. نسمي هذا في الوظيفة ، وهذا في الواقع متغير عالمي
var value = "0" ؛ الدالة mei () {var value = "1" ؛ console.log (this.value) ؛ // 0 console.log (value) ؛ // 1} mei () ؛الإخراج هو 0 لأن هذا يشير إلى العالم
2. مُنشئ
هذا هو الاستخدام الذي أنا أكثر دراية به. استخدم هذا في المنشئ. بعد كائن جديد جديد ، يشير هذا إلى هذا الكائن الجديد.
var value = "window" ؛ وظيفة mei () {this.value = 1 ؛ this.show = function () {console.log (this.value)}} var m = new mei () ؛ console.log (M.Value) ؛ // 1 m.show () ؛ // 1يمكنك أن ترى أن الإخراج هو 1 بدلاً من النافذة. يمكن ملاحظة أنه بسبب المُنشئ ، أشار هذا هنا إلى كائن جديد بدلاً من متغير عالمي.
3. استبيان وتطبيق
استعارة الأمثلة من مكالمتي وتطبيق المدونة مباشرة
var p = "456" ؛ الدالة f1 () {this.p = "123" ؛ } الدالة f2 () {console.log (this.p) ؛ } f2 () ؛ // 456 f2.call (f1 ()) ؛ // 123 f2.apply (f1 ()) ؛ // 123من السهل فهم إخراج السطر الأول. هذا يشير إلى العالم. 123 لأنه بعد استخدام المكالمة أو التقديم ، هذا في نقاط F2 إلى F1 ، و P في F1 هو 123. يرجى النقر على منشور المدونة للحصول على التفاصيل.
4. تسمى الوظيفة كوسيلة لكائن (حيث ارتكبت خطأ)
في ذلك الوقت ، طلبت مني كتابة كائن بعدة طرق. لقد حددت متغيرًا عالميًا في ذهني ، ثم أسميت هذا في طريقة الكائن. سألني القائم بإجراء المقابلة ما هذا؟ قلت إنها يجب أن تكون نافذة ، لأنني استخدمت هذه الطريقة قليلاً ، واعتقدت أن الجديد أو المكالمات فقط من شأنه أن يغير اتجاه هذا ، لذلك قال إنه كان خطأ وطلب مني العودة وأرى ذلك بنفسي. الآن لقد جربته ، أنا مخطئ حقًا. انشر الكود
var value = "الأب" ؛ وظيفة mei () {} mei.value = "child" ؛ mei.get = function () {console.log (this.value)} ؛ mei.show = function () {console.log (value)} ؛ mei.get () ؛ // child mei.show () ؛ //أبنظرًا لأن GET يتم استدعاؤه كوسيلة لـ MEI ، فإن هذا هنا يشير إلى mei.value حتى يخرج الطفل
أما الأب ، فأنا أفهم بهذه الطريقة. يتم تعريف الوظيفة التي يشير إليها المعرض في البيئة العالمية. بسبب سلسلة النطاق ، لم يتم العثور على قيمة في العرض ، لذلك حدد بيئته وأجدها. هذا يجد القيمة العالمية. إذا كان هناك خطأ في الفهم هنا ، آمل أن يتمكن صديق من الإشارة إليه!