Что выведет код Junior this, call, apply, bind обновлено

Потеря this у метода класса

Вопрос

Что выведет код? По строке на каждый вывод.

class Counter {
  n = 0;
  inc() { this.n++; return this.n; }
}
const c = new Counter();
const inc = c.inc;
console.log(c.inc());
try { inc(); } catch (e) { console.log(e.constructor.name); }

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 1, TypeError. Почему так В строгом режиме this у оторванного метода - undefined, обращение бросает TypeError.

Что выведет

1
TypeError

Разбор

Почему так

В строгом режиме this у оторванного метода - undefined, обращение бросает TypeError. В React это лечат стрелочным полем класса или bind в конструкторе.

Вывод

1
TypeError

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.