Есть функция конструктор
function Request() {
this.state = 'ready';
}
Request.prototype.start = function() {
console.log(this.state, 'show this state');
};
Создаю экземпляр и вызываю функцию callStart
const req = new Request();
function callStart(func) {
console.log(func === req.start); // true
func(); // undefined "show this state"
}
callStart(req.start);
Почему потерялся контекст this в prototype.start? В фукнции callStart я стравниваю методы и они равны, если в callStart в качестве параметра передать req и вызвать req.start()
const req = new Request();
function callStart(reqParam) {
reqParam.start(); // ready show this state
}
callStart(req);
То с this все нормально.
Что эта за магия JavaScript-а?!