حظر على "هذا"
إزالة this
الكلمة الأساسية من JavaScript تجعل اللغة أفضل!
هذا بسبب this
يعتمد على كيفية استدعاء الوظيفة ، وليس مكان تعريفها. لذلك ، جافا سكريبتthis
مصدر الكثير من الارتباك اللغويوضع.
يضمن استخدام هذا أن الوظيفة تعمل على الكائن المحدد في سياقه الذي تم استدعاؤه.
من خلال this
طريقة ، لا يمكنك فقط الرجوع إلى أي خاصية من خصائص الكائن ، ولكن يمكنك أيضًا تمرير مرجع إلى الكائن بأكمله في مكان ما (تقليل أمان التطبيق).
قيمة الthis
يسمى سياق الاستدعاء وسيتم تحديده عند استدعاء الوظيفة. على سبيل المثال ، دالة مثل هذه ، تم إعلانها بدون كائن ، صالحة تمامًا:
functionsay Hi() {
console.log(this.firstName)
}
هذه الوظيفة لا تعرف حتى الآن ما سيكون هذا. سيتم الكشف عن هذا عند تنفيذ البرنامج.
إذا تم تشغيل نفس الوظيفة في سياق كائنات مختلفة ، فستتلقى ملفًا مختلفًاthis
:
var user = { firstName: 'John' }
var admin = { firstName: 'Admin' }
function funcName() {
console.log(this.firstName)
}
user.f = funcName
admin.g = funcName
// this is equal to the object before point:
user.f() // Joni
admin.g() // Admin
admin['g']() // Admin (access to the object is implemented through square brackets)
لذا ، فإن قيمة this
لا تعتمد على كيفية إنشاء الوظيفة ، يتم تحديدها حصريًا وقت المكالمة.
"هذا" وعيوبه
الأساليب هي الوظائف التي يتم تخزينها في الكائنات. لكي تعرف الوظيفة أي كائن تعمل عليه ، استخدم this
.
لكن this
يفقد السياق في العديد من المواقف (القيمة المرجعة غير معروفة):
- يفقد السياق داخل الوظائف المتداخلة
- يفقد السياق في عمليات الاسترجاعات
this
يفقد السياق عند استخدام الطريقة كمعالج للأحداث.
أفضل لغة
JavaScript هي لغة برمجة وظيفية ولغة قائمة على النموذج الأولي. إذا تخلصنا من هذا ، فسيتبقى لنا JavaScript كلغة برمجة وظيفية. هذا أفضل!
في نفس الوقت ، بدونthis
تقدم JavaScript طريقة جديدة وفريدة للقيام بالبرمجة الموجهة للكائنات بدون فئات أو وراثة.
التخلي عن هذا
أفضل طريقة لتجنب this
المشاكل ذات الصلة ليست للاستخدام this
على الاطلاق!
::: لاحظ جافا سكريبت تبدو JavaScript بدون هذا أفضل لغة برمجة وظيفية!
:::
يمكننا إنشاء كائنات مغلفة دون استخدام هذا كمجموعة من الإغلاق. بمساعدة React Hooks يمكننا إنشاء مكونات ذات حالة بدون this
.
ال this
لا يمكن إزالة الكلمة الأساسية من JavaScript دون تدمير جميع التطبيقات الموجودة. ومع ذلك ، ما الذي يمكن عمله؟ يمكننا الكتابة رمزنا الخاص بدون this
والسماح باستخدامه في المكتبات فقط. في هذه الأثناء، new rules ESLint
يتم إدخالها ، وحظر استخدامthis
.
منذ الدرس الأخير تخلينا classes, we قل وداعا إلى this
معهم.
مشاكل؟
اكتب لDiscord محادثة.
أسئلة:
الthis
الكلمة الرئيسية هي-
- الكائن الذي تنتمي إليه الطريقة
- الوسيطة الأولى في الوظيفة
- مجموعة من الخصائص
هل من الممكن الاستغناء عن هذا:
- يمكنك ، ومن الأفضل عدم استخدامها على الإطلاق
- هذا ممكن ، لكن لا ينصح به
- إنه مستحيل ، لأنه لا يمكن إزالة "هذا" من JavaScript
جافا سكريبت بدونthis
يبدو أنه الأفضل:
- لغة البرمجة الوظيفية
- لغة البرمجة الإجرائية
- لغة البرمجة المنطقية
لفهم مقدار ما تعلمته في هذا الدرس ، قم بإجراء الاختبار فيmobile application من مدرستنا في هذا الموضوع.
! [المدرسة السومرية] (/ img / app.jpg)
الروابط
- Removing the 'this' keyword from JavaScript makes the language better
- The article "The this keyword in JavaScript"
- MDN web doc. Article "this"
المساهمون✨
الشكر يعود إلى هؤلاء الأشخاص الرائعين (emoji key):
Dmitriy K. | Dmitriy Vasilev 💵 | Resoner2005 🐛 🎨 🖋 | Navernoss 🖋 🐛 🎨 |