ترجمهی فراخوانی توابع JavaScript
- صفحه قبلی JS Function Parameters
- صفحه بعدی JS Function Call
کد درونی توابع 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) و یک روش (fullName) ایجاد شده است:
مثال
var myObject = { firstName: "Bill", lastName: "Gates", fullName: function () { return this.firstName + " " + this.lastName; } } myObject.fullName(); // این کار به بازگشت "Bill Gates" منجر میشود
method fullName یک تابع است. این تابع به اشیاء تعلق دارد. myObject مالک تابع است.
به عنوان this
اشیاء مورد آزمایش، اشیایی هستند که "مالک" این کد JavaScript را دارند. در این مثال،this
مقدار آن myObject است.
یک تست انجام دهید! این روش fullName را تغییر دهید تا بازگرداند this
مقدار:
مثال
var myObject = { firstName: "Bill", lastName: "Gates", fullName: function () { return this; } } myObject.fullName(); // این کار به بازگشت [object Object] (مالک اشیاء) منجر میشود
با فراخوانی تابع به عنوان روش شیء، this
شیء خود را خواهد شد.
مقدار
با فراخوانی تابع از طریق سازنده تابع قبل از فراخوانی تابع باشد،
اگر کلمه کلیدی
به نظر میرسد که شما یک تابع جدید ایجاد میکنید، اما به دلیل اینکه توابع JavaScript شیء هستند، شما در واقع یک شیء جدید ایجاد میکنید:
مثال
// این سازنده تابع است: function myFunction(arg1, arg2) { this.firstName = arg1; this.lastName = arg2; } // یک شیء جدید ایجاد شده است: var x = new myFunction("Bill", "Gates"); x.firstName; // "Bill" را برمیگرداند"
فراخوانی سازنده یک شیء جدید ایجاد میکند. شیء جدید ویژگیها و روشهای خود را از سازنده ارث میبرد.
در داخل سازنده this
کلمه کلیدی هیچ مقداری ندارد.
this
مقدار خواهد شد شیء جدیدی که در زمان فراخوانی تابع ایجاد میشود.
- صفحه قبلی JS Function Parameters
- صفحه بعدی JS Function Call