Window.pipedriveLeadboosterConfig = { القاعدة: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', الإصدار: 2, } ؛(الدالة () { var w = نافذة إذا كان (w.LeadBooster) { console.warn('LeadBooster موجود بالفعل') } وإلا { { w.LeadBooster = { q: [], على: دالة (ن، ح) { { هذا.q.push({ t: 'o'، n: n، n: n، h: h }) }, الزناد: الدالة (n) { هذا.q.push({ t: 't'، n: n: n }) }, } } })() فهم الكلمة الرئيسية "هذا" في JavaScript - The Codest
The Codest
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • الصناعات
    • التكنولوجيا المالية والمصرفية
    • E-commerce
    • أدتك
    • التكنولوجيا الصحية
    • التصنيع
    • الخدمات اللوجستية
    • السيارات
    • إنترنت الأشياء
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
السهم الخلفي العودة إلى الوراء
2019-09-09
تطوير البرمجيات

فهم الكلمة الرئيسية "هذا" في JavaScript

لوكاش كولكو

في معظم لغات البرمجة الموجهة للكائنات، يكون للكلمة الرئيسية "هذا" معنى خاص. عادةً ما تشير إلى أن الكائن هو سياق التنفيذ (أي إلى المثيل الحالي للكائن). على سبيل المثال، نستخدم هذه الكلمة عند الإشارة إلى خاصية كائن من الداخل: نكتب this.propertyName، ويكون السياق هو الكائن وهذا يشير إليه.

'هذا' في JavaScript

في JavaScript الأمر أكثر تعقيدًا لأنه حيث هذا لا يعتمد فقط على كيفية تعريف الدالة ولكن أيضًا على شكل استدعائها.

ألق نظرة على كيفية هذا يعمل حسب مكان الاستدعاء وشكله.

السياق العالمي

يُستخدم في سياق عام مرتبط بالكائن العام، مثل النافذة في متصفح الويب.

هذا؛ // النافذة

طريقة الكائن الداخلي

يُستخدم داخل أسلوب كائن مرتبط بأقرب كائن مرفق. الكائن هو السياق الجديد لـ هذا كلمة رئيسية. لاحظ أنه لا يجب عليك تغيير الدالة () إلى بناء جملة ES6 مرح: () => هذا السياق: () => هذا السياق لأنه سيغير السياق.

const obj = {
  السياق: "كائن",
  متعة: دالة() {
    إرجاع هذا السياق;
  }
};

obj.fun()؛ // كائن

في هذا المثال مع كائن متداخل, هذا لا يزال يشير إلى سياقه الأقرب.

const nestedObj = {
  السياق: "الأصل",
  الطفل: {
    السياق: "تابع",
    متعة: دالة() {
      إرجاع هذا السياق;
    }
  }
};

nestedObj.child.fun()؛ // الطفل

وظيفة خارج السياق

تُستخدم داخل دالة ليس لها سياق (ليس لها كائن كأصل) مرتبطة بالسياق العام، حتى لو كانت الدالة مُعرّفة داخل الكائن.

لاحظ أننا نستخدم متغير السياق بدلاً من السماح/سياق السياق لأن دعنا و تشكل تغيير السياق المتغير المرفق المتغير. فار دائمًا الأقرب إلى سياق التنفيذ العام. دعنا و تشكل إعلان المتغيرات في نطاق كتلة محلية فقط.

متغير السياق = "عالمي";

const obj = {
  السياق: "كائن",
  funA: دالة() {
    دالة funB() { {
      const context = "دالة";
      إرجاع هذا السياق;
    }
    إرجاع funB()؛ // تم استدعاؤها بدون سياق
  }
};

obj.funA()؛ // عالمي

داخل دالة المنشئ الداخلية

تُستخدم داخل دالة تكون منشئ الكائن الجديد المرتبط بها.

متغير السياق = "عالمي";

دالة Obj() {
  هذا السياق = "سياق Obj";
}

const obj = Obj الجديد();
سياق obj.context; // سياق Obj

دالة داخلية محددة في سلسلة النماذج الأولية

تُستخدم داخل دالة مُعرّفة في سلسلة النماذج الأولية لإنشاء كائن مرتبط بها.

const ProtoObj = {
  متعة: دالة() {
    إرجاع هذا.name;
  }
};

const obj = Object.create.create(ProtoObj);
obj.name = "foo";
obj.fun()؛ // foo

في الداخل استدعاء() وتطبيق() الدالتين

استدعاء() و تطبيق() هي JavaScript الدوال. باستخدام هذه الدوال، يمكن للكائن استخدام أساليب تنتمي إلى كائن آخر. استدعاء() يأخذ الوسيطات بشكل منفصل حيث تطبيق() يأخذها كمصفوفة.

هذا مرتبط هنا بالسياق الجديد المتغير في استدعاء() و تطبيق() الأساليب.

const objA = {
  السياق: "objA",
  متعة: دالة() {
    console.log(this.context, arguments);
  }
};

const objB = {
  السياق: "objB"
};

objA.fun(1، 2)؛ // objA، [1، 2]
objA.fun.call(objB، 1، 2، 3)؛ // objB، [1، 2، 3]
objA.fun.apply(objB, [1, 2, 3, 4])؛ // objB, [1, 2, 3, 4]

داخل دالة الربط()

ربط() هي أيضًا طريقة JavaScript. فهي تنشئ دالة جديدة تحتوي على هذا إلى المعامل الأول الذي تم تمريره إلى ربط()**.**

const objA = {
  السياق: "objA",
  متعة: دالة() {
    console.log(this.context, arguments);
  }
};

const objB = {
  السياق: "objB"
};

const fun = objA.fun.bind(objB, 1, 2);
متعة (3، 4)؛ // objB، [1، 2، 3، 4]

داخل معالجات الأحداث

يُستخدم في أي معالج أحداث (على سبيل المثال, مُضيف الحدث، عند النقر، إرفاق الحدث)، فهو مرتبط بعنصر DOM الذي ارتبط به الحدث.

document.querySelector(".foo").addEventListener("click", function() {
  هذا؛ // يشير إلى عنصر القسمة 'foo'
});

دالة السهم ES6

عند استخدامه داخل دالة السهم يكون مرتبطًا دائمًا بنطاقه المعجمي. في الدالة السهمية، لا يمكنك إعادة تعيين هذا بأي شكل من الأشكال.

const globalArrowFunction = () => هذا;

globalArrowFunction()؛ // النافذة

const obj = {
  السياق: "كائن",
  funA: () => هذا,
  funB: دالة() {
    إرجاع () => {
      إرجاع هذا السياق;
    };
  }
};

obj.funA()؛ // النافذة
obj.funB()()؛ // الكائن
التقرير المحدد لعام 2020

اقرأ المزيد:

  • أكبر التحديات في تطوير البرمجيات المخصصة
  • ما هي الاختلافات بين دار البرمجيات ووكالة توظيف تكنولوجيا المعلومات؟

مقالات ذات صلة

تطوير البرمجيات

إنشاء تطبيقات ويب مستقبلية: رؤى من فريق خبراء The Codest

اكتشف كيف تتفوق شركة The Codest في إنشاء تطبيقات ويب تفاعلية قابلة للتطوير باستخدام أحدث التقنيات، وتقديم تجارب مستخدم سلسة عبر جميع المنصات. اكتشف كيف تقود خبرتنا التحول الرقمي والأعمال التجارية...

ذا كوديست
تطوير البرمجيات

أفضل 10 شركات لتطوير البرمجيات في لاتفيا

تعرّف على أفضل شركات تطوير البرمجيات في لاتفيا وحلولها المبتكرة في أحدث مقالاتنا. اكتشف كيف يمكن لهذه الشركات الرائدة في مجال التكنولوجيا المساعدة في الارتقاء بأعمالك.

thecodest
الحلول المؤسسية وحلول التوسعة

أساسيات تطوير برمجيات جافا: دليل للاستعانة بمصادر خارجية بنجاح

استكشف هذا الدليل الأساسي حول تطوير برمجيات جافا outsourcing بنجاح لتعزيز الكفاءة والوصول إلى الخبرة وتحقيق نجاح المشروع باستخدام The Codest.

thecodest
تطوير البرمجيات

الدليل الشامل للاستعانة بمصادر خارجية في بولندا

إن الطفرة في outsourcing في بولندا مدفوعة بالتقدم الاقتصادي والتعليمي والتكنولوجي، مما يعزز نمو تكنولوجيا المعلومات والمناخ الملائم للأعمال.

ذا كوديست
الحلول المؤسسية وحلول التوسعة

الدليل الكامل لأدوات وتقنيات تدقيق تكنولوجيا المعلومات

تضمن عمليات تدقيق تكنولوجيا المعلومات وجود أنظمة آمنة وفعالة ومتوافقة. تعرف على المزيد حول أهميتها من خلال قراءة المقال كاملاً.

The Codest
ياكوب جاكوب جاكوبوفيتش CTO وشريك مؤسس CTO

اشترك في قاعدة معارفنا وابقَ على اطلاع على آخر المستجدات في قطاع تكنولوجيا المعلومات.

    نبذة عنا

    The Codest - شركة دولية لتطوير البرمجيات لها مراكز تقنية في بولندا.

    المملكة المتحدة - المقر الرئيسي

    • المكتب 303 ب، 182-184 شارع هاي ستريت نورث E6 2JA
      لندن، إنجلترا

    بولندا - مراكز التكنولوجيا المحلية

    • مجمع مكاتب فابريتشنا المكتبي، أليجا
      بوكوجو 18، 31-564 كراكوف
    • سفارة الأدمغة، كونستروكتورسكا
      11, 02-673 02-673 وارسو، بولندا

      The Codest

    • الصفحة الرئيسية
    • نبذة عنا
    • الخدمات
    • دراسات الحالة
    • اعرف كيف
    • الوظائف
    • القاموس

      الخدمات

    • استشاري
    • تطوير البرمجيات
    • تطوير الواجهة الخلفية
    • تطوير الواجهة الأمامية
    • Staff Augmentation
    • مطورو الواجهة الخلفية
    • مهندسو السحابة
    • مهندسو البيانات
    • أخرى
    • مهندسو ضمان الجودة

      الموارد

    • حقائق وأساطير حول التعاون مع شريك خارجي لتطوير البرمجيات
    • من الولايات المتحدة الأمريكية إلى أوروبا: لماذا تقرر الشركات الأمريكية الناشئة الانتقال إلى أوروبا؟
    • مقارنة مراكز تطوير التكنولوجيا في الخارج: تك أوفشور أوروبا (بولندا)، آسيان (الفلبين)، أوراسيا (تركيا)
    • ما هي أهم التحديات التي تواجه CTOs ومديري تكنولوجيا المعلومات؟
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • شروط استخدام الموقع الإلكتروني

    جميع الحقوق محفوظة © 2025 بواسطة The Codest. جميع الحقوق محفوظة.

    arArabic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek arArabic