Учу
JS, дошел до темы где разбирается метод bind.
Прочитал лекцию, но практически ничего не понял.
А именно как именно происходит потеря контекста? Как это понять? Как я понял при потере и нужно использовать bind.
Попробывал решить представленные там задачи. Думал думал, но так как не смог разобраться с лекцией, то и задачи естественно не смог решить.
Посмотрел решение, но так и не понял, почему именно нужно использовать bind. Для меня очевидным кажется если просто передать функцию с this, то все будет правильно, но как оказывается, ничего не работает, а если передать с bind (this.function.bind(this, args)), то работет.
Помогите разобраться что к чему, объясните пожалуйста следующее решение задачи:
"use strict";
function ask(question, answer, ok, fail) {
var result = prompt(question, '');
if (result.toLowerCase() == answer.toLowerCase()) ok();
else fail();
}
var user = {
login: 'Василий',
password: '12345',
// метод для вызова из ask
loginDone: function(result) {
console.log( this.login + (result ? ' вошёл в сайт' : ' ошибка входа') );
},
checkPassword: function() {
ask("Ваш пароль?", this.password,
this.loginDone.bind(this, true)
,
this.loginDone.call(this, false)
);
}
};
var vasya = user;
user = null;
vasya.checkPassword();