Я просматриваю исходный код библиотеки openlayers
javascript. И в файле source/CartoDB.js
я нахожу что-то следующее:
class CartoDB extends XYZ {
constructor () {}
initializeMap_() {
...
const client = new XMLHttpRequest();
client.addEventListener('load', this.handleInitResponse_.bind(this, paramHash));
client.addEventListener('error', this.handleInitError_.bind(this));
client.open('POST', mapUrl);
client.setRequestHeader('Content-type', 'application/json');
client.send(JSON.stringify(this.config_));
}
handleInitResponse_(paramHash, event) {
...
}
handleInitError_(event) {
...
}
}
Я очищаю код и удаляю несвязанный код для моего вопроса.
Меня сбивает с толку следующие две строки:
client.addEventListener('load', this.handleInitResponse_.bind(this, paramHash));
client.addEventListener('error', this.handleInitError_.bind(this));
Я думаю, this.handleInitResponse_.bind(this, paramHash)
просто равно this.handleInitResponse_
и this.handleInitError_.bind(this)
просто равно this.handleInitError_
. И эти два метода просто определены в классе CartoDB.
Так зачем обращаться с этим так?