Ø´ÛØ¡Ùا ٠ع٠ÙÙØ§ Ø¨Ø±Ø§Û ÙÙ Ø§ÛØ´ ÚÛØ²ÙاÛÛ Ú©Ù Ø¯Ø± دÙÛØ§Û ÙØ§ÙØ¹Û ÙØ³ØªÙد ساخت٠٠ÛâØ´ÙÙØ¯Ø ٠اÙÙØ¯ Ú©Ø§Ø±Ø¨Ø±ÙØ§Ø Ø³ÙØ§Ø±Ø´Ø§Øª Ù ØºÛØ±Ù:
let user = {
name: "John",
age: 30
};
٠در دÙÛØ§Û ÙØ§ÙØ¹ÛØ ÛÚ© کاربر Ù ÛâØªÙØ§Ùد Ú©Ø§Ø±Û Ø§ÙØ¬Ø§Ù Ø¯ÙØ¯ Ø¨Ø±Ø§Û Ù Ø«Ø§Ù ÚÛØ²Û را از سبد Ø®Ø±ÛØ¯ اتخاب Ú©ÙØ¯Ø ÙØ§Ø±Ø¯ Ø³Ø§ÛØª Ø´ÙØ¯Ø از Ø³Ø§ÛØª خارج Ø´ÙØ¯ Ù ØºÛØ±Ù.
اع٠ا٠در Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت ØªÙØ³Ø· تابعâÙØ§Û درÙÙ ÙÛÚÚ¯ÛâÙØ§ ÙÙ Ø§ÛØ´ داد٠٠ÛâØ´ÙÙØ¯.
٠ثاÙâÙØ§ÛÛ Ø§Ø² ٠تد
Ø¨Ø±Ø§Û Ø´Ø±ÙØ¹Ø Ø¨ÛØ§ÛÛØ¯ ب٠user ÛØ§Ø¯ بدÙÛÙ
Ú©Ù Ø³ÙØ§Ù
Ú©ÙØ¯:
let user = {
name: "John",
age: 30
};
user.sayHi = function() {
alert("Ø³ÙØ§Ù
!");
};
user.sayHi(); // !Ø³ÙØ§Ù
اÛÙØ¬Ø§ Ù
ا از Function Expression Ø¨Ø±Ø§Û Ø³Ø§Ø®Øª ÛÚ© تابع Ø§Ø³ØªÙØ§Ø¯Ù کردÛÙ
٠آ٠را ب٠ÙÛÚÚ¯Û user.sayHi Ø´ÛØ¡ ØªØ®ØµÛØµ دادÛÙ
.
سپس Ù
ÛâØªÙØ§ÙÛÙ
آ٠را با user.sayHi() صدا بزÙÛÙ
. ØØ§Ùا user Ù
ÛâØªÙØ§Ùد ØµØØ¨Øª Ú©ÙØ¯!
ØªØ§Ø¨Ø¹Û Ú©Ù ÛÚ© ÙÛÚÚ¯Û Ø§Ø² Ø´ÛØ¡Ø§Û باشد ٠تد Ø¢Ù ÙØ§Ù ÛØ¯Ù Ù ÛâØ´ÙØ¯.
پس اÛÙØ¬Ø§ Ù
ا ÛÚ© Ù
تد sayHi از Ø´ÛØ¡ user دارÛÙ
.
ÙØ·Ø¹Ø§ ٠ا Ù ÛâØªÙØ§ÙستÛ٠از ØªØ§Ø¨Ø¹Û Ú©Ù ÙØ¨Ùا تعرÛ٠شد٠است Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ Ø Ù Ø«Ù Ø§ÛÙØ¬Ø§:
let user = {
// ...
};
// اÙ٠تعرÛÙ Ù
ÛâÚ©ÙÛÙ
function sayHi() {
alert("Ø³ÙØ§Ù
!");
};
// سپس ب٠عÙÙØ§Ù Ù
تد آ٠را اضاÙÙ Ù
ÛâÚ©ÙÛÙ
user.sayHi = sayHi;
user.sayHi(); // !Ø³ÙØ§Ù
ز٠اÙÛ Ú©Ù Ù Ø§ با Ø§Ø³ØªÙØ§Ø¯Ù از Ø´ÛØ¡ Ø¨Ø±Ø§Û ÙÙ Ø§ÛØ´ ÚÛØ²ÙØ§Û Ù ÙØ¬Ùد کد Ù ÛâÙÙÛØ³ÛÙ Ø Ø¨Ù Ø¢Ù Ø¨Ø±ÙØ§Ù ÙâÙÙÛØ³Û Ø´ÛØ¡Ú¯Ø±Ø§ Ù ÛâÚ¯ÙÛÙØ¯Ø ÛØ§ Ø¨Ù Ø·ÙØ± Ø®ÙØ§ØµÙ: âOOPâ.
Ù Ø¨ØØ« OOP Ø¨Ø³ÛØ§Ø± بزرگ ٠ب٠ÙÙØ¨Ù Ø®ÙØ¯ ÛÚ© عÙ٠جذاب است. ÚÚ¯ÙÙÙ ÚÛØ²ÙØ§Û Ù ÙØ¬Ùد را Ø¨Ù Ø¯Ø±Ø³ØªÛ Ø§ÙØªØ®Ø§Ø¨ Ú©ÙÛÙ Ø ÚÚ¯ÙÙ٠تعا٠٠بÛ٠آÙÙØ§ را Ø³Ø§Ø²Ù Ø§ÙØ¯ÙÛ Ú©ÙÛÙ Ø Ø¨Ù Ø¢Ù Ù Ø¹Ù Ø§Ø±Û ÙØ±Ù âØ§ÙØ²Ø§Ø± Ù ÛâÚ¯ÙÛÙØ¯ ٠در Ù ÙØ±Ø¯ اÛÙ Ù ÙØ¶Ùع کتابâÙØ§Û عاÙÛâØ§Û ÙØ¬Ùد دارد ٠اÙÙØ¯: âDesign Patterns: Elements of Reusable Object-Oriented Softwareâ ØªÙسط E. GammaØ R. HelmØ R. JohnsonØ J. Vissides ÛØ§ âObject-Oriented Analysis and Design with Applicationsâ ØªÙسط G. Booch Ù ØºÛØ±Ù.
Ø®ÙØ§ØµÙâÙÙÛØ³Û ٠تد
ÛÚ© سÛÙØªÚ©Ø³ Ú©ÙØªØ§ÙâØªØ± Ø¨Ø±Ø§Û Ù ØªØ¯ÙØ§ در Ø´ÛØ¡ÙØ§Û ÙÛØªØ±Ø§Ù ÙØ¬Ùد دارد:
// اÛÙ Ø´ÛØ¡Ùا کار ÛکساÙÛ Ø§ÙØ¬Ø§Ù
Ù
ÛâØ¯ÙÙØ¯
user = {
sayHi: function() {
alert("Hello");
}
};
// Ø®ÙØ§ØµÙâÙÙÛØ³Û Ù
تد Ø¨ÙØªØ± Ø¨Ù ÙØ¸Ø± Ù
ÛâØ±Ø³Ø¯ ÙÙØ
user = {
sayHi() { // Ûکسا٠است "sayHi: function(){...}" با
alert("Hello");
}
};
ÙÙ
Ø§ÙØ·Ùر Ú©Ù ÙØ´Ø§Ù Ø¯Ø§Ø¯Ù Ø´Ø¯Ø Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
"function" را ØØ°Ù Ú©ÙÛÙ
Ù ÙÙØ· sayHi() را بÙÙÛØ³ÛÙ
.
ØÙÛÙØªØ§ اÛÙ Ø¯Ù Ø±ÙØ´ Ú©Ø§Ù ÙØ§ Ûکسا٠ÙÛØ³ØªÙد. ØªÙØ§ÙتâÙØ§ÛÛ Ø¬Ø²Ø¦Û Ù Ù Ø±Ø¨ÙØ· Ø¨Ù ÙØ±Ø§Ø«Øª Ø´ÛØ¡ (بعدا آ٠را Ù ÛâØ¢Ù ÙØ²ÛÙ ) ÙØ¬Ùد Ø¯Ø§Ø±ÙØ¯Ø ا٠ا Ø¢ÙÙØ§ Ø§ÙØ§Ù Ù ÙÙ ÙÛØ³ØªÙد. ØªÙØ±Ûبا در ØªÙ Ø§Ù Ù ÙØ§Ø±Ø¯ سÛÙØªÚ©Ø³ Ú©ÙØªØ§ÙâØªØ± ØªØ±Ø¬ÛØ داد٠٠ÛâØ´ÙØ¯.
âthisâ Ø¯Ø± Ù ØªØ¯ÙØ§
اÛÙÚ©Ù ÛÚ© ٠تد Ø´ÛØ¡ ÙÛØ§Ø²Ù ÙØ¯ Ø¯Ø³ØªØ±Ø³Û Ø¨Ù Ø§Ø·ÙØ§Ø¹Ø§Øª Ø°Ø®ÛØ±ÙâØ´Ø¯Ù Ø¯Ø± Ø¢Ù Ø´ÛØ¡ باشد تا کارش را Ø§ÙØ¬Ø§Ù Ø¯ÙØ¯ ÛÚ© ÚÛØ² Ø±Ø§ÛØ¬ است.
Ø¨Ø±Ø§Û Ù
Ø«Ø§ÙØ کد درÙÙ user.sayHi() Ø´Ø§ÛØ¯ ب٠اسÙ
user Ø§ØØªÛاج داشت٠باشد.
Ø¨Ø±Ø§Û Ø¯Ø³ØªØ±Ø³Û Ø¨Ù Ø´ÛØ¡Ø Ù
تد Ù
ÛâØªÙØ§Ùد از Ú©ÙÙ
Ù Ú©ÙÛØ¯Û this Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙØ¯.
Ù
ÙØ¯Ø§Ø± this Ø´ÛØ¡ âÙØ¨Ù از ÙÙØ·Ùâ Ø§Ø³ØªØ ÙÙ
Ø§Ù Ø´ÛØ¡Ø§Û Ú©Ù Ø¨Ø±Ø§Û ØµØ¯Ø§Ø²Ø¯Ù Ù
تد Ø§Ø³ØªÙØ§Ø¯Ù شد٠است.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let user = {
name: "John",
age: 30,
sayHi() {
// ÙÙ
ا٠"Ø´ÛØ¡ Ú©ÙÙÙÛ" است "this"
alert(this.name);
}
};
user.sayHi(); // John
اÛÙØ¬Ø§Ø در ØÛ٠اجراشد٠user.sayHi()Ø Ù
ÙØ¯Ø§Ø± this برابر با user Ø®ÙØ§Ùد Ø¨ÙØ¯.
Ø¨Ù Ø·ÙØ± ÙÙÛØ اÙ
Ú©Ø§Ù Ø¯Ø³ØªØ±Ø³Û Ø¨Ù Ø´ÛØ¡ بدÙÙ this ÙÙ
ÙØ¬Ùد Ø¯Ø§Ø±Ø¯Ø Ø¨Ø§ Ù
Ø±Ø§Ø¬Ø¹Ù Ø¨Ù Ø¢Ù Ø¨Ù ÙØ³ÛÙÙâÛ Ù
ØªØºÛØ± Ø¨ÛØ±ÙÙÛ:
let user = {
name: "John",
age: 30,
sayHi() {
alert(user.name); // "this" Ø¨Ù Ø¬Ø§Û "user"
}
};
â¦Ø§Ù
ا ÚÙÛÙ Ú©Ø¯Û ÙØ§Ø¨Ù اطÙ
ÛÙØ§Ù ÙÛØ³Øª. اگر Ù
ا تصÙ
ÛÙ
Ø¨Ú¯ÛØ±ÛÙ
Ú©Ù user را در Ù
ØªØºÛØ± دÛÚ¯Ø±Û Ú©Ù¾Û Ú©ÙÛÙ
Ø Ø¨Ø±Ø§Û Ù
ثا٠admin = user Ù user را با ÚÛØ² دÛÚ¯Ø±Û Ø¹ÙØ¶ Ú©ÙÛÙ
Ø Ø³Ù¾Ø³ Ø¨Ù Ø´ÛØ¡ اشتباÙÛ Ø¯Ø³ØªØ±Ø³Û Ø®ÙØ§Ùد داشت.
اÛÙ Ù ÙØ¶Ùع در کد پاÛÛÙ ÙØ´Ø§Ù داد٠شدÙ:
let user = {
name: "John",
age: 30,
sayHi() {
alert( user.name ); // باعث ÛÚ© Ø§Ø±ÙØ± Ù
ÛâØ´ÙØ¯
}
};
let admin = user;
user = null; // بازÙÙÛØ³Û Ú©ÙÛØ¯ تا ÚÛØ²Ùا را ÙØ§Ø¶Ø Ú©ÙÛØ¯
admin.sayHi(); // TypeError: Cannot read property 'name' of null
اگر Ù
ا از this.name Ø¨Ù Ø¬Ø§Û user.name درÙÙ alert Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâکردÛÙ
Ø Ú©Ø¯ کار Ù
Ûâکرد.
âthisâ Ù ØØ¯Ùد ÙÛØ³Øª
در Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±ÛÙ¾ØªØ Ú©ÙÙ
Ù Ú©ÙÛØ¯Û this Ù
ØªÙØ§Ùت از Ø¨ÛØ´ØªØ± زباÙâÙØ§Û Ø¨Ø±ÙØ§Ù
ÙâÙÙÛØ³Û دÛگر Ø±ÙØªØ§Ø± Ù
ÛâÚ©ÙØ¯. اÛÙ Ú©ÙÙ
Ù Ù
ÛâØªÙØ§Ùد در ÙØ± ØªØ§Ø¨Ø¹Û Ø§Ø³ØªÙØ§Ø¯Ù Ø´ÙØ¯Ø ØØªÛ اگر آ٠تابع Ù
ØªØ¯Û Ø§Ø² ÛÚ© Ø´ÛØ¡ ÙØ¨Ø§Ø´Ø¯.
در ٠ثا٠پاÛÛÙ ÙÛÚ Ø³ÛÙØªÚ©Ø³ Ø§Ø±ÙØ±Û ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯:
function sayHi() {
alert( this.name );
}
Ù
ÙØ¯Ø§Ø± this ÙÙگاÙ
Ø§Ø¬Ø±Ø§Ø´Ø¯Ù Ø¨Ø±ÙØ§Ù
Ù Ø§Ø±Ø²ÛØ§Ø¨Û Ù
ÛâØ´ÙØ¯Ø با ÙØ§Ø¨Ø³ØªÚ¯Û ب٠زÙ
ÛÙÙâÛ Ø§Ø³ØªÙØ§Ø¯Ù.
Ø¨Ø±Ø§Û Ù Ø«Ø§ÙØ اÛÙØ¬Ø§ تابع ÛکساÙÛ Ø¨Ù Ø¯Ù Ø´ÛØ¡ Ù ØªÙØ§Ùت ØªØ®ØµÛØµ داد٠شد٠است Ù âthisâ Ù ØªÙØ§ÙØªÛ ÙÙگا٠صدازد٠دارد.
let user = { name: "John" };
let admin = { name: "Admin" };
function sayHi() {
alert( this.name );
}
// Ø§Ø³ØªÙØ§Ø¯Ù از ØªØ§Ø¨Ø¹Û Ûکسا٠در Ø¯Ù Ø´ÛØ¡
user.f = sayHi;
admin.f = sayHi;
// Ù
ØªÙØ§ÙØªÛ Ø¯Ø§Ø±ÙØ¯ this اÛ٠صدازدÙâÙØ§
// درÙ٠تابع ÙÙ
Ø§Ù Ø´ÛØ¡ "ÙØ¨Ù ÙÙØ·Ù" است "this"
user.f(); // John (this == user)
admin.f(); // Admin (this == admin)
admin['f'](); // Admin (ÙÙØ·Ù ÛØ§ براکتâÙØ§ ب٠Ù
تد Ø¯Ø³ØªØ±Ø³Û Ø¯Ø§Ø±ÙØ¯ - Ù
سئÙÙâÛ Ù
ÙÙ
Û ÙÛØ³Øª)
ÙØ§Ø¹Ø¯Ù ساد٠است: اگر obj.f() صدا Ø²Ø¯Ù Ø´ÙØ¯Ø سپس در ØÛ٠صدازد٠fØ this برابر با obj است. پس در Ù
Ø«Ø§Ù Ø¨Ø§ÙØ§ ÛØ§ برابر با user است ÛØ§ admin.
this == undefined٠ا ØØªÛ Ù ÛâØªÙØ§ÙÛ٠تابع را بدÙÙ ÙÛÚ Ø´ÛØ¡Ø§Û صدا بزÙÛÙ :
function sayHi() {
alert(this);
}
sayHi(); // undefined
در اÛÙ Ù
ÙØ±Ø¯ this در ØØ§Ùت سختâÚ¯ÛØ±Ø§ÙÙ (strict mode) برابر با undefined است. اگر Ù
ا ØªÙØ§Ø´ Ú©ÙÛÙ
ک٠ب٠this.name Ø¯Ø³ØªØ±Ø³Û Ù¾ÛØ¯Ø§ Ú©ÙÛÙ
Ø ÛÚ© Ø§Ø±ÙØ± Ø¨Ù ÙØ¬Ùد Ù
ÛâØ¢ÛØ¯.
در ØØ§Ùت ØºÛØ± سختâÚ¯ÛØ±Ø§Ù٠در ÚÙÛÙ Ù
ÙØ±Ø¯Û Ù
ÙØ¯Ø§Ø± this برابر است با global object (در Ù
Ø±ÙØ±Ú¯Ø± window Ø§Ø³ØªØ Ù
ا در ÙØµÙ Ø´ÛØ¡ Ú¯ÙÙØ¨Ø§Ù ب٠سراغ Ø¢Ù Ù
ÛâØ±ÙÛÙ
). اÛÙ ÛÚ© Ø±ÙØªØ§Ø± ØªØ§Ø±ÛØ®Û است Ú©Ù "use strict" آ٠را درست Ù
ÛâÚ©ÙØ¯.
Ù
عÙ
ÙÙØ§ ÚÙÛ٠صدازدÙÛ ÛÚ© Ø§Ø±ÙØ± Ø¨Ø±ÙØ§Ù
ÙâÙÙÛØ³Û است. اگر this درÙÙ ÛÚ© تابع Ø¨Ø§Ø´Ø¯Ø Ø§ÙØªØ¸Ø§Ø± Ù
ÛâØ±ÙØ¯ ک٠در زÙ
ÛÙÙâÛ Ø´ÛØ¡ صدا Ø²Ø¯Ù Ø´ÙØ¯.
this بدÙÙ Ù
ØØ¯ÙØ¯ÛØªØ§Ú¯Ø± Ø´Ù
ا از ÛÚ© Ø²Ø¨Ø§Ù Ø¨Ø±ÙØ§Ù
ÙâÙÙÛØ³Û دÛÚ¯Ø±Û Ù
ÛØ§ÛÛØ¯Ø پس Ø´Ù
ا Ø§ØØªÙ
Ø§ÙØ§ Ø¨Ù ÙØ¸Ø±ÛÙ âthis Ù
ØØ¯ÙØ¯â Ø¹Ø§Ø¯Øª کردÙâØ§ÛØ¯Ø Ú©Ù Ù
ØªØ¯ÙØ§Û تعرÛÙâØ´Ø¯Ù Ø¯Ø±ÙÙ ÛÚ© Ø´ÛØ¡ ÙÙ
ÛØ´Ù Ø¯Ø§Ø±Ø§Û ÛÚ© this ÙØ³ØªÙد ک٠ب٠ÙÙ
Ø§Ù Ø´ÛØ¡ Ø±Ø¬ÙØ¹ Ù
ÛâÚ©ÙØ¯.
در Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت this âØ¢Ø²Ø§Ø¯â Ø§Ø³ØªØ Ù
ÙØ¯Ø§Ø± Ø¢Ù ÙÙگاÙ
صدا Ø²Ø¯Ù Ø§Ø±Ø²ÛØ§Ø¨Û Ù
ÛâØ´ÙØ¯ ٠ب٠اÛÙÚ©Ù Ù
تد کجا تعرÛÙ Ø´Ø¯Ù Ø¨Ø³ØªÚ¯Û ÙØ¯Ø§Ø±Ø¯ ٠بÙک٠ب٠اÛÙÚ©Ù Ø´ÛØ¡ âÙØ¨Ù از ÙÙØ·Ùâ Ú٠باشد Ø¨Ø³ØªÚ¯Û Ø¯Ø§Ø±Ø¯.
اÛÙÚ©Ù this ÙÙگاÙ
Ø§Ø¬Ø±Ø§Ø´Ø¯Ù Ø§Ø±Ø²ÛØ§Ø¨Û Ù
ÛâØ´ÙØ¯ ÙÙØ§Ûد Ù Ø²ÛØ§ÙâÙØ§ÛÛ Ø¯Ø§Ø±Ø¯. از طرÙÛØ ÛÚ© تابع Ù
ÛâØªÙØ§Ùد Ø¨Ø±Ø§Û Ø´ÛØ¡ÙØ§Û Ù
ØªÙØ§Ùت Ø§Ø³ØªÙØ§Ø¯Ù Ø´ÙØ¯. از طرÙÛ Ø¯ÛÚ¯Ø±Ø ÙØ± ÚÙØ¯Ø± Ø§Ø¹Ø·Ø§Ù Ø¨ÛØ´ØªØ± باشد Ø§ØØªÙ
Ø§ÙØ§Øª Ø¨Ø±Ø§Û Ø§Ø´ØªØ¨Ø§ÙØ§Øª ÙÙ
Ø¨ÛØ´ØªØ± Ù
ÛâØ´ÙØ¯.
اÛÙØ¬Ø§ ٠ا Ø¨Ù Ø¯ÙØ¨Ø§Ù اÛÙ ÙÛØ³ØªÛÙ Ú©Ù Ø¯Ø±Ø¨Ø§Ø±Ù Ø®ÙØ¨ ÛØ§ بد Ø¨ÙØ¯Ù طراØÛ اÛÙ Ø²Ø¨Ø§Ù ÙØ¶Ø§Ùت Ú©ÙÛÙ . ٠ا ÚÚ¯ÙÙ٠کارکرد٠با Ø¢ÙØ ÚÚ¯ÙÙÙ Ø³ÙØ¯ برد٠از Ø¢Ù Ù ÚÚ¯ÙÙÚ¯Û Ø¬ÙÙÚ¯ÛØ±Û از Ù Ø´Ú©ÙØ§Øª را ÛØ§Ø¯ Ù ÛâÚ¯ÛØ±ÛÙ .
تابعâÙØ§Û Arrow âthisâ ÙØ¯Ø§Ø±Ùد
Arrow functionÙØ§ خاص ÙØ³ØªÙد: Ø¢ÙÙØ§ از âØ®ÙØ¯Ø´Ø§Ùâ this ÙØ¯Ø§Ø±Ùد. اگر Ù
ا از this در ÚÙÛÙ ØªØ§Ø¨Ø¹Û Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
Ø Ù
ÙØ¯Ø§Ø± آ٠از تابع âÙ
عÙ
ÙÙÛâ Ø¨ÛرÙÙÛ Ú¯Ø±ÙØªÙ Ù
ÛâØ´ÙØ¯.
Ø¨Ø±Ø§Û Ù
Ø«Ø§ÙØ اÛÙØ¬Ø§ arrow() از this Ù
تد Ø¨ÛØ±ÙÙÛ user.sayHi() Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâÚ©ÙØ¯:
let user = {
firstName: "Ilya",
sayHi() {
let arrow = () => alert(this.firstName);
arrow();
}
};
user.sayHi(); // Ilya
اÛÙ ÛÚ© ÙÛÚÚ¯Û Ø®Ø§Øµ arrow functionÙØ§ Ø§Ø³ØªØ Ù Ø²Ù
اÙÛ Ú©Ù Ù
ا ÙÙ
ÛâØ®ÙØ§ÙÛÙ
ÛÚ© this جداگاÙ٠داشت٠باشÛÙ
بÙک٠آ٠را از Ù
ØØªÙØ§Û Ø¨Ø§ÙØ§ØªØ± Ø¨Ú¯ÛØ±ÛÙ
Ø Ø§Ø² Ø¢Ù Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâÚ©ÙÛÙ
. بعدا در ÙØµÙ Ø³Ø±Ú©Ø´Û Ø¯ÙØ¨Ø§Ø±Ù از تابعâÙØ§Û Ú©Ù
اÙÛ Ù
ا در arrow functionÙØ§ عÙ
ÛÙâØªØ± Ù
ÛâØ´ÙÛÙ
.
Ø®ÙØ§ØµÙ
- تابعâÙØ§ÛÛ Ú©Ù Ø¯Ø± ÙÛÚÚ¯ÛâÙØ§Û Ø´ÛØ¡Ùا Ø°Ø®ÛØ±Ù Ù ÛâØ´ÙÙØ¯ â٠تدâ ÙØ§Ù ÛØ¯Ù Ù ÛâØ´ÙÙØ¯.
- Ù
ØªØ¯ÙØ§ Ø¨Ù Ø´ÛØ¡Ùا اجاز٠Ù
ÛâØ¯ÙÙØ¯ Ú©Ù âÚ©Ø§Ø±Û Ø§ÙØ¬Ø§Ù
دÙÙØ¯â Ù
Ø«Ù
object.doSomething(). - Ù
ØªØ¯ÙØ§ Ù
ÛâØªÙØ§ÙÙØ¯ با
thisØ¨Ù Ø´ÛØ¡ Ø±Ø¬ÙØ¹ Ú©ÙÙØ¯.
Ù
ÙØ¯Ø§Ø± this ÙÙگاÙ
اجرا تعرÛÙ Ù
ÛâØ´ÙØ¯.
- ÙÙگاÙ
Û Ú©Ù ÛÚ© تابع تعرÛÙ Ù
ÛâØ´ÙØ¯Ø Ù
Ù
ک٠است از
thisØ§Ø³ØªÙØ§Ø¯Ù Ú©ÙØ¯Ø ا٠ا Ø¢Ùthisتا ز٠اÙÛ Ú©Ù ØªØ§Ø¨Ø¹ صدا Ø²Ø¯Ù ÙØ´Ùد Ù ÙØ¯Ø§Ø±Û ÙØ¯Ø§Ø±Ø¯. - ÛÚ© تابع Ù ÛâØªÙØ§Ùد بÛÙ Ø´ÛØ¡Ùا Ú©Ù¾Û Ø´ÙØ¯.
- زÙ
اÙÛ Ú©Ù ÛÚ© تابع با سÛÙØªÚ©Ø³ âÙ
ØªØ¯â ØµØ¯Ø§ زد٠Ù
ÛâØ´ÙØ¯:
object.method()Ø Ù ÙØ¯Ø§Ø±thisدر ØÛ٠صدازد٠برابر باobjectاست.
ÙØ·Ùا در ÙØ¸Ø± Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯ Ú©Ù arrow functionÙØ§ خاص ÙØ³ØªÙد: Ø¢ÙÙØ§ this ÙØ¯Ø§Ø±Ùد. زÙ
اÙÛ Ú©Ù Ø¨Ù this درÙÙ ÛÚ© arrow function Ø¯Ø³ØªØ±Ø³Û Ù¾ÛØ¯Ø§ Ù
ÛâÚ©ÙÛÙ
Ø Ù
ÙØ¯Ø§Ø± آ٠از Ø¨ÛØ±Ù٠تابع Ú¯Ø±ÙØªÙ Ù
ÛâØ´ÙØ¯.
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)