Экземпляр класса теряет ссылку на себя (this)
Описание
Есть у меня простая функция для ловли ошибок:
Window.prototype.assert = async function (action) {
try {
return await action();
} catch (error) {
console.log(error);
location.reload();
}
};
В начале я использую его вот так:
Window.prototype.assert = async function(action) {
try {
return await action();
} catch (error) {
console.log(error);
location.reload();
}
};
class Program {
async main() {
console.log(this);
}
};
const program = new Program();
window.assert(() => program.main());
... и как бы все хорошо. Но если я решаю вызов main
немного сократить...
Window.prototype.assert = async function(action) {
try {
return await action();
} catch (error) {
console.log(error);
location.reload();
}
};
class Program {
async main() {
console.log(this);
}
};
const program = new Program();
window.assert(program.main);
...экземпляр класса Program
почему-то теряет ссылку на себя (this
становиться undefined
).
Вопрос
Почему такое происходит, ведь я создаю экземпляр, потом уже передаю функцию экземпляра, где она и вызывается?