this - это вновь созданный объект при вызове конструктора

Контекст вызова конструктора - это вновь созданный объект. Конструктор инициализирует объект данными, которые приходят из аргументов конструктора, устанавливает начальные значения для свойств, присоединяет обработчики событий и т.д.

Проверим контекст в следующем примере:

function Foo () {
  // this - это instance
  this.property = 'Дефолтное значение';
}
// Вызов конструктора
const instance = new Foo();
instance.property;  // => 'Дефолтное значение'

new Foo() выполняет вызов конструктора, где контекст - это instance. Внутри Foo объект инициализируется: this.property присваивается дефолтное значение.

Тот же сценарий происходит при использовании синтаксиса класса (доступен в ES2015), только инициализация происходит в методе конструктора:

class Foo {
  constructor() {
    // this - это instance
    this.property = 'Дефолтное значение';
  }
}
// Вызов конструктора
const instance = new Foo();
instance.property;  // => 'Дефолтное значение'

Во время выполнения new Foo() JavaScript создает пустой объект и делает его контекстом метода constructor(). Теперь вы можете добавлять свойства к объекту с помощью ключевого слова this: this.property = 'Дефолтное значение'.