ØªØ§Ø¨Ø¹Û Ú©Ù "this" را از دست Ù ÛâØ¯ÙØ¯ را تصØÛØ Ú©ÙÛØ¯
ÙØ±Ø§Ø®ÙاÙÛ askPassword() در کد پاÛÛÙ Ø¨Ø§ÛØ¯ رÙ
ز ÛØ§ ÚÚ© Ú©ÙØ¯ ٠سپس با ØªÙØ¬Ù Ø¨Ù Ø¬ÙØ§Ø¨ user.loginOk/loginFail را ÙØ±Ø§Ø®ÙاÙÛ Ú©ÙØ¯.
ا٠ا Ø¨Ù Ø§Ø±ÙØ± بر٠ÛâØ®ÙØ±Ø¯. ÚØ±Ø§Ø
خط برجست٠شد٠را تصØÛØ Ú©ÙØ¯ تا ÙÙ Ù ÚÛØ² Ø¨Ù Ø¯Ø±Ø³ØªÛ Ú©Ø§Ø± Ú©ÙØ¯ (بÙÛÙ Ø®Ø·ÙØ· ÙÛØ§Ø²Û ب٠تغÛÛØ± ÙØ¯Ø§Ø±Ùد).
function askPassword(ok, fail) {
let password = prompt("رÙ
زØ", '');
if (password == "rockstar") ok();
else fail();
}
let user = {
name: 'John',
loginOk() {
alert(`${this.name} ÙØ§Ø±Ø¯ شد`);
},
loginFail() {
alert(`${this.name} ÙØªÙØ§ÙØ³Øª ÙØ§Ø±Ø¯ Ø´ÙØ¯`);
},
};
askPassword(user.loginOk, user.loginFail);
ب٠دÙÛ٠اÛÙÚ©Ù ask تابعâÙØ§Û loginOk/loginFail را بدÙÙ Ø´ÛØ¡ Ø¯Ø±ÛØ§Ùت Ù
ÛâÚ©ÙØ¯ Ø§Ø±ÙØ± Ø§ÛØ¬Ø§Ø¯ Ù
ÛâØ´ÙØ¯.
زÙ
اÙÛ Ú©Ù Ø§Û٠تابع Ø¢ÙâÙØ§ را ÙØ±Ø§ Ù
ÛâØ®ÙØ§ÙØ¯Ø Ø¨Ù Ø·ÙØ± Ø·Ø¨ÛØ¹Û Ø¢ÙâÙØ§ this=undefined را ÙØ±Ø¶ Ù
ÛâÚ©ÙÙØ¯.
Ø¨ÛØ§ÛÛØ¯ زÙ
ÛÙ٠را با bind Ù¾ÛÙÙØ¯ بزÙÛÙ
:
function askPassword(ok, fail) {
let password = prompt("رÙ
زØ", '');
if (password == "rockstar") ok();
else fail();
}
let user = {
name: 'John',
loginOk() {
alert(`${this.name} ÙØ§Ø±Ø¯ شد`);
},
loginFail() {
alert(`${this.name} ÙØªÙØ§ÙØ³Øª ÙØ§Ø±Ø¯ Ø´ÙØ¯`);
},
};
askPassword(user.loginOk.bind(user), user.loginFail.bind(user));
ØØ§Ùا کار Ù ÛâÚ©ÙØ¯.
راÙâØÙ جاÛگزÛÙ Ù ÛâØªÙØ§Ùد اÛ٠باشد:
//...
askPassword(() => user.loginOk(), () => user.loginFail());
٠ع٠ÙÙØ§ اÛ٠راÙâØÙ Ù٠کار Ù ÛâÚ©ÙØ¯ Ù Ø¸Ø§ÙØ± Ø®ÙØ¨Û دارد.
اگرÚ٠اÛ٠کد در Ù
ÙÙØ¹ÛتâÙØ§Û Ù¾ÛÚÛØ¯ÙâØªØ± Ú©Ù
تر ÙØ§Ø¨Ù اطÙ
ÛÙØ§Ù Ø§Ø³ØªØ Ø²Ù
اÙÛ Ú©Ù Ù
ØªØºÛØ± user Ù
Ù
ک٠است بعد از اÛÙÚ©Ù askPassword ÙØ±Ø§Ø®ÙاÙÛ Ø´ÙØ¯ Ù ÙØ¨Ù از اÛÙک٠کاربر Ø¬ÙØ§Ø¨ Ø¨Ø¯ÙØ¯ Ù () => user.loginOk() را ÙØ±Ø§ Ø¨Ø®ÙØ§ÙØ¯Ø ØªØºÛÛØ± Ú©ÙØ¯.
