Вот ссылка на MDN-объяснение function.prototype.bind () - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
Я добавил несколько console.logs, чтобы помочь мне понять, что происходит.
var module = {
x: 42,
getX: function() {
return this.x;
}
};
var boundGetX = module.getX.bind(module);
console.log(boundGetX());
console.log(boundGetX().x);
console.log(boundGetX.x);
Первый файл console.log возвращает
42
Для меня это имеет смысл.
Однако второй и третий console.logs возвращают
undefined
Почемутот?Как функция может видеть и регистрировать свойство модуля x с его сохраненным значением 42, и все же значение boundGetX
для x не определено?
После использования функции связывания boundGetX
не указывает теперь на module.getX
И переменная 'this' указывает на модуль?
Почему бы boundGetX.x
не указать module.x
?И как он может успешно регистрировать значение module.x
, когда boundGetX.x
не определено?