استدعاء وظيفة جافا سكريبت
سيتم تنفيذ التعليمات البرمجية الموجودة داخل JavaScript function
عندما يستدعيها "شيء ما".
استدعاء وظيفة JavaScript
لا يتم تنفيذ الكود الموجود داخل الوظيفة عند تحديد الوظيفة .
يتم تنفيذ الكود الموجود داخل الوظيفة عند استدعاء الوظيفة .
من الشائع استخدام مصطلح " استدعاء دالة " بدلاً من " استدعاء دالة ".
من الشائع أيضًا أن تقول "استدعاء دالة" أو "ابدأ دالة" أو "تنفيذ وظيفة".
في هذا البرنامج التعليمي ، سنستخدم الاستدعاء ، لأنه يمكن استدعاء وظيفة JavaScript دون استدعائها.
استدعاء وظيفة كوظيفة
مثال
function myFunction(a, b) {
return a * b;
}
myFunction(10, 2); //
Will return 20
الوظيفة أعلاه لا تنتمي إلى أي كائن. لكن في JavaScript يوجد دائمًا كائن عام افتراضي.
في HTML ، الكائن العام الافتراضي هو صفحة HTML نفسها ، لذا فإن الوظيفة أعلاه "تنتمي" إلى صفحة HTML.
في المتصفح ، يكون كائن الصفحة هو نافذة المتصفح. تصبح الوظيفة أعلاه تلقائيًا وظيفة نافذة.
myFunction () و window.myFunction () هي نفس الوظيفة:
مثال
function myFunction(a, b) {
return a * b;
}
window.myFunction(10, 2); // Will also return 20
هذه طريقة شائعة لاستدعاء وظيفة JavaScript ، ولكنها ليست ممارسة جيدة جدًا.
يمكن للمتغيرات أو الأساليب أو الوظائف العامة بسهولة إنشاء تعارضات في الأسماء وأخطاء في الكائن العام.
هذه الكلمة _
في JavaScript ، الشيء الذي يسمى this
، هو الكائن الذي "يمتلك" الكود الحالي.
تكون قيمة this
، عند استخدامها في دالة ، هي الكائن الذي "يمتلك" الوظيفة.
لاحظ أن this
هذا ليس متغيرًا. إنها كلمة رئيسية. لا يمكنك تغيير قيمة this
.
نصيحة: اقرأ المزيد عن this
الكلمة الأساسية في JS this Keyword .
الكائن العالمي
عندما يتم استدعاء دالة بدون كائن مالك ، this
تصبح قيمة الكائن العام.
في متصفح الويب ، يكون الكائن العام هو نافذة المتصفح.
يعيد هذا المثال كائن النافذة كقيمة this
:
مثال
let x = myFunction();
// x will be the window object
function myFunction() {
return this;
}
استدعاء دالة كدالة عالمية ، يجعل قيمة هذا هي الكائن العام.
يمكن أن يؤدي استخدام كائن النافذة كمتغير إلى تعطل البرنامج بسهولة.
استدعاء وظيفة كطريقة
في JavaScript ، يمكنك تحديد الوظائف كطرق كائن.
ينشئ المثال التالي كائنًا ( myObject ) بخاصيتين ( الاسم الأول والاسم الأخير ) وطريقة ( الاسم الكامل ):
مثال
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName(); // Will return "John Doe"
طريقة fullName هي دالة. الوظيفة تنتمي إلى الكائن. myObject هو صاحب الوظيفة.
الشيء الذي يسمى this
، هو الكائن الذي "يمتلك" كود JavaScript. في هذه الحالة ، قيمة this
هي myObject .
قم بتجريبه! قم بتغيير طريقة fullName لإرجاع قيمة this
:
مثال
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this;
}
}
// This will return [object Object] (the owner object)
myObject.fullName();
استدعاء دالة كطريقة كائن ، يتسبب في this
أن تكون قيمة الكائن نفسه.
استدعاء دالة مع منشئ دالة
إذا كان استدعاء الدالة مسبوقًا new
بالكلمة الأساسية ، فهو استدعاء مُنشئ.
يبدو أنك تنشئ وظيفة جديدة ، ولكن نظرًا لأن وظائف JavaScript هي كائنات ، فإنك تقوم بالفعل بإنشاء كائن جديد:
مثال
// This is a function constructor:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// This creates a new object
const myObj = new myFunction("John", "Doe");
// This will return "John"
myObj.firstName;
يقوم استدعاء المُنشئ بإنشاء كائن جديد. يرث الكائن الجديد الخصائص والأساليب من الباني الخاص به.
الكلمة الأساسية this
في المنشئ ليس لها قيمة.
ستكون قيمة this
الكائن الجديد الذي تم إنشاؤه عند استدعاء الوظيفة.