نداء الوظائف جافا سكربت

سيتم تنفيذ الكود في الداخل وظيفة JavaScript عند إتصال "بشيء" بها.

استدعاء وظيفة JavaScript

عندما يتمتحديدعندما لا يتم

عندما يتمإتصالعندما، يتم تنفيذ الكود في الداخل وظيفة.

يمكن أيضًا القول إن استدعاء الوظيفة "إطلاق الوظيفة" أو "تنفيذ الوظيفة".

في هذا الدرس، نستخدم "إتصال.”

إتصال بالوظيفة كوظيفة

المثال

function myFunction(a, b) {
    return a * b;
}
myFunction(10, 2);           // سيقوم بإرجاع 20

جرب بنفسك

هذه الوظائف لا تنتمي لأي عنصر. ولكن في JavaScript، هناك دائمًا عنصر عالمي افتراضي.

في HTML، العنصر العالمي الافتراضي هو صفحة HTML نفسها، جميع الوظائف فوقها "تبدو" صفحة HTML.

في المتصفح، هذا العنصر المصفوفة هو نافذة المتصفح. تكون الوظيفة تلقائيًا وظيفة نافذة.

myFunction() و window.myFunction() هما نفس الدالة:

المثال

function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // سيعود أيضًا 20

جرب بنفسك

هذه هي طريقة شائعة لاستدعاء الدالة، ولكنها ليست عادة جيدة.

العناصر المتاحة والطرق أو الدوال في العنصر العام يمكن أن تتسبب في تضارب الأسماء والثغرات بسهولة.

this كلمة مفتاحية

في JavaScript، يُسمى this شيء، يشير إلى العنصر الذي يمتلك هذا الكود.

this قيمته، عند استخدامه في الدالة، هو العنصر الذي يمتلك الدالة.

لاحظ، this ليس متغيرًا. إنه كلمة مفتاحية. لا يمكنك تغيير this قيمته.

العنصر العام

عند استدعاء العنصر بدون مالك العنصر،this قيمة تصبح العنصر العام.

في متصفح الويب، العنصر العام هو العنصر المتصفح.

هذا المثال يستخدم this قيمة تعود هذا العنصر window:

المثال

var x = myFunction();            // x سيكون العنصر window
function myFunction() {
   return this;
}

جرب بنفسك

استدعاء دالة كدالة عالمية، سيزيد من this قيمة تصبح العنصر العام.

استخدام window كعنصر يمكن أن يجعل البرنامج ينهار بسهولة.

استدعاء الدالة كطريقة

في JavaScript، يمكنك تعريف الدالة كطريقة للعنصر.

في هذا المثال، يتم إنشاء عنصر (myObject) يحتوي على خصائص (firstName و lastName) ومETHOD (fullName):

المثال

var myObject = {
    firstName: "Bill",
    lastName: "Gates",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObject.fullName();         // سيعود "Bill Gates"

جرب بنفسك

dالة fullName هي دالة. الدالة تنتمي إلى العنصر. myObject هو مالك الدالة.

يسمى this شيء، هو "الملكية" للعنصر JavaScript هذا. في هذا المثال،this قيمة هي myObject.

للإختبار! قم بتعديل هذه دالة fullName لتحقيق this قيمة:

المثال

var myObject = {
    firstName: "Bill",
    lastName: "Gates",
    fullName: function () {
        return this;
    }
}
myObject.fullName();          // سيعود [object Object] (مثل الملكية للعنصر)

جرب بنفسك

استدعاء الدالة كطريقة كائن سينتج عنه this القيمة تصبح الجسم نفسه.

استدعاء الدالة من خلال بناء الدالة

إذا كان هناك كلمة مفتاحية قبل استدعاء الدالة، new إذا كانت الكلمة المفتاحية هي، فإن هذا هو استدعاء بناء الدالة.

يبدو كأنك تقوم بإنشاء دالة جديدة، ولكن نظرًا لأن دوال JavaScript هي كائنات، فأنت في الواقع تقوم بإنشاء كائن جديد:

المثال

// هذا هو بناء الدالة:
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName  = arg2;
}
// تم إنشاء جسم جديد:
var x = new myFunction("Bill", "Gates");
x.firstName;                             // سيقوم بإرجاع "Bill"

جرب بنفسك

استدعاء بناء الدالة سيقوم بإنشاء جسم جديد. سيتم استيراد الخصائص والأساليب من بناء الدالة إلى الجسم الجديد.

داخل بناء this الكلمة المفتاحية ليس لها قيمة.

this القيمة ستكون جسم جديد يتم إنشاؤه عند استدعاء الدالة.