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 = 'Дефолтное значение'.