Экземпляр класса теряет ссылку на себя (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).

Вопрос

Почему такое происходит, ведь я создаю экземпляр, потом уже передаю функцию экземпляра, где она и вызывается?


Ответы (0 шт):