انتقل إلى المحتوى الرئيسي

حظر على "هذا"

@serverSerrverlesskiy

إزالة 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.

Poor

لكن this يفقد السياق في العديد من المواقف (القيمة المرجعة غير معروفة):

  • يفقد السياق داخل الوظائف المتداخلة
  • يفقد السياق في عمليات الاسترجاعات
  • this يفقد السياق عند استخدام الطريقة كمعالج للأحداث.

أفضل لغة

The_best

JavaScript هي لغة برمجة وظيفية ولغة قائمة على النموذج الأولي. إذا تخلصنا من هذا ، فسيتبقى لنا JavaScript كلغة برمجة وظيفية. هذا أفضل!

في نفس الوقت ، بدونthis تقدم JavaScript طريقة جديدة وفريدة للقيام بالبرمجة الموجهة للكائنات بدون فئات أو وراثة.

التخلي عن هذا

remember

أفضل طريقة لتجنب this المشاكل ذات الصلة ليست للاستخدام this على الاطلاق!

::: لاحظ جافا سكريبت تبدو JavaScript بدون هذا أفضل لغة برمجة وظيفية!

:::

يمكننا إنشاء كائنات مغلفة دون استخدام هذا كمجموعة من الإغلاق. بمساعدة React Hooks يمكننا إنشاء مكونات ذات حالة🏗️ بدون this.

ال this لا يمكن إزالة الكلمة الأساسية من JavaScript دون تدمير جميع التطبيقات الموجودة. ومع ذلك ، ما الذي يمكن عمله؟ يمكننا الكتابة 🖊️ رمزنا الخاص بدون this والسماح باستخدامه في المكتبات فقط. في هذه الأثناء، new rules ESLint يتم إدخالها ، وحظر استخدامthis.

منذ الدرس الأخير تخلينا classes, we قل وداعا إلى this معهم.

مشاكل؟

Problem

اكتب لDiscord محادثة.

أسئلة:

Question

الthis الكلمة الرئيسية هي-

  1. الكائن الذي تنتمي إليه الطريقة
  2. الوسيطة الأولى في الوظيفة
  3. مجموعة من الخصائص

هل من الممكن الاستغناء عن هذا:

  1. يمكنك ، ومن الأفضل عدم استخدامها على الإطلاق
  2. هذا ممكن ، لكن لا ينصح به
  3. إنه مستحيل ، لأنه لا يمكن إزالة "هذا" من JavaScript

جافا سكريبت بدونthis يبدو أنه الأفضل:

  1. لغة البرمجة الوظيفية
  2. لغة البرمجة الإجرائية
  3. لغة البرمجة المنطقية

لفهم مقدار ما تعلمته في هذا الدرس ، قم بإجراء الاختبار فيmobile application من مدرستنا في هذا الموضوع.

! [المدرسة السومرية] (/ img / app.jpg)

الروابط

  1. Removing the 'this' keyword from JavaScript makes the language better
  2. The article "The this keyword in JavaScript"
  3. MDN web doc. Article "this"

المساهمون✨

الشكر يعود إلى هؤلاء الأشخاص الرائعين (emoji key):


Dmitriy K.

📖

Dmitriy Vasilev

💵

Resoner2005

🐛 🎨 🖋

Navernoss

🖋 🐛 🎨

Become a Patron!