Стрелка берёт this из окружающей области навсегда. В конструкторе это обычно экземпляр — и call/apply/bind это не сменят.
Пример
functionPerson(name) {
this.name = name;
this.say1 = function () {
console.log(this.name);
};
this.say2 = () => {
console.log(this.name);
};
}
const john = newPerson('John');
const dave = newPerson('Dave');
john.say1.call(dave); // Dave
john.say2.call(dave); // John — this зафиксирован
Плюс: безопасно отрывать метод (const fn = john.say2; fn()). Минус: каждый экземпляр получает свою копию функции (не на prototype), чуть больше памяти.
Как думает сеньор
Для методов на прототипе стрелки в конструкторе — спорный выбор. Часто лучше обычный метод + bind в конструкторе или class fields, осознавая trade-off.
Итог
Стрелка в конструкторе гарантирует стабильный this экземпляра ценой копии на каждый объект.
Какое преимущество даёт стрелочная функция как метод внутри констру… · Sobeso