Ask losing this
ä¸ã®ã³ã¼ãã® askPassword() ã®å¼ã³åºãã¯ããã¹ã¯ã¼ãããã§ãã¯ãããã®åçã«ãã user.loginOk/LoginFail ãå¼ã³ã¾ãã
ããããããã¯ã¨ã©ã¼ã«ãªãã¾ãããªãã§ãããï¼
ãã¹ã¦ãæ£ããåä½ãå§ããããããã¤ã©ã¤ããããè¡ãä¿®æ£ãã¦ãã ãã(ä»ã®è¡ã¯å¤æ´ãã¾ãã)ã
function askPassword(ok, fail) {
let password = prompt("Password?", '');
if (password == "rockstar") ok();
else fail();
}
let user = {
name: 'John',
loginOk() {
alert(`${this.name} logged in`);
},
loginFail() {
alert(`${this.name} failed to log in`);
},
};
askPassword(user.loginOk, user.loginFail);
ask ã¯ãªãã¸ã§ã¯ããªãã§é¢æ° loginOk/loginFail ãåå¾ãã¦ããããã«ã¨ã©ã¼ãèµ·ãã¾ãã
ããããå¼ã¶ã¨ããé常 this=undefined ã¨æ³å®ãã¾ãã
ã³ã³ããã¹ãã bind ãã¾ããã:
function askPassword(ok, fail) {
let password = prompt("Password?", '');
if (password == "rockstar") ok();
else fail();
}
let user = {
name: 'John',
loginOk() {
alert(`${this.name} logged in`);
},
loginFail() {
alert(`${this.name} failed to log in`);
},
};
askPassword(user.loginOk.bind(user), user.loginFail.bind(user));
ããã§åä½ãã¾ãã
å¥ã®è§£çã¨ãã¦ã¯:
//...
askPassword(() => user.loginOk(), () => user.loginFail());
é常ã¯åä½ãã¾ãããuser ãè¦æ±ã㦠() => user.loginOk() ãå®è¡ããéã«ä¸æ¸ããããå¯è½æ§ã®ãããããªããè¤éãªç¶æ³ã®å ´åã«å¤±æããå¯è½æ§ãããã¾ãã