فراخوانی تابع در JavaScript
یادگیری JavaScriptکد داخل یک تابع جاوا اسکریپت اجرا خواهد شد زمانی که "چیزی" آن را فراخوانی می کند.
فرخوانی یک تابع در جاوا اسکریپت
کد تابع در هنگام تعریف تابع اجرا نمی شود.
کد در داخل یک تابع هنگامی که تابع فراخوانی می شود، اجرا می شود.
شایع است که به جای "call a function" از عبارت "invoke a function" استفاده شود.
همچنین مشترک است که می گویند "فراخوانی یک تابع"، "شروع یک تابع"، یا "اجرای یک تابع".
در این آموزش، ما از فراخوانی استفاده خواهیم کرد، زیرا یک تابع جاوا اسکریپت بدون فراخوانی صدا زده می شود.
فراخوانی یک تابع به عنوان یک تابع
function myFunction(a, b) {
return a * b;
}
myFunction(10, 2); // Will return 20
مشاهده مثالتابع فوق به هیچ شیء تعلق ندارد. اما در جاوا اسکریپت همیشه یک شیء پیش فرض سراسری وجود دارد.
در HTML، شیء پیش فرض جهانی، صفحه HTML است، بنابراین تابع بالای "متعلق به" صفحه HTML است.
در مرورگر، صفحه به عنوان window مرورگر است. عملکرد بالا به طور خودکار یک تابع window می شود.
myFunction () و window.myFunction () یک تابع مشابه است:
function myFunction(a, b) {
return a * b;
}
window.myFunction(10, 2); // Will also return 20
مشاهده مثالاین یک روش معمول برای فراخوانی یک تابع جاوا اسکریپت است، اما یک عمل بسیار خوبی نیست.
متغیرهای سراسری، متد ها یا توابع می توانند به راحتی تضادهای نام و اشکالات در شیء سراسری ایجاد کنند.
کلیدواژه this
در جاوا اسکریپت، چیزی که this نامیده می شود، جسم است که کد فعلی را «دارای» است.
ارزش this ، هنگامی که در یک تابع استفاده می شود، شیئی است که "دارای" تابع است.
توجه داشته باشید که this یک متغیر نیست. this کلمه کلیدی است. شما نمی توانید ارزش this را تغییر دهید.
شی سراسری
هنگامی که یک تابع بدون یک شیء صاحب نامیده می شود، ارزش این شیء سراسری می شود.
در مرورگر وب، شیء سراسری window مرورگر است.
این مثال شیء window را به عنوان مقدار این باز می گرداند:
var x = myFunction(); // x will be the window object
function myFunction() {
return this;
}
مشاهده مثالفراخوانی یک تابع به عنوان یک متد
در جاوا اسکریپت شما می توانید توابع را به عنوان روش شی تعریف کنید.
مثال زیر یک شی (myObject) با دو ویژگی (firstName and lastName) و یک روش (fullName) ایجاد می کند:
var myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName(); // Will return "John Doe"
مشاهده مثالمتد fullName تابع است. این تابع متعلق به شی است. myObject صاحب تابع است.
چیزی که this نامیده می شود، شیئی است که «کد جاوا اسکریپت» را «دارای» است. در این مورد ارزش myObject، است.
امتحانش کن! روش fullName را برای به دست آوردن ارزش این تغییر دهید:
var myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this;
}
}
myObject.fullName(); // Will return [object Object] (the owner object)
مشاهده مثالفراخوانی تابع با استفاده از ساختار تابع
اگر یک فراخوانی تابع با کلمه کلیدی new پیش رفته باشد، این یک فراخوانی سازنده است.
به نظر میرسد شما یک تابع جدید ایجاد میکنید، اما از آنجا که توابع جاوااسکریپتی اشیا هستند، شما در واقع یک شی جدید ایجاد میکنید:
// This is a function constructor:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// This creates a new object
var x = new myFunction("John", "Doe");
x.firstName; // Will return "John"
مشاهده مثالفراخوانی سازنده یک شیء جدید ایجاد می کند. این شیء جدید خواص و روش ها را از سازنده اش به ارث می برد.
نظر شما
>