Проверяет понимание отличий стрелочных функций от обычных, включая отсутствие собственного контекста this и невозможность использования в качестве конструктора.
Стрелочные функции были введены в ES6 как более краткий синтаксис для функций, но они принципиально отличаются от обычных функций. Главное отличие — отсутствие собственного контекста this: стрелочная функция наследует this из внешнего лексического окружения. Это делает её удобной для колбэков, но лишает возможности быть конструктором.
Оператор new при вызове функции выполняет несколько шагов: создаёт новый пустой объект, связывает его прототип с prototype функции, вызывает функцию с this, указывающим на новый объект, и возвращает этот объект (если функция не вернула другой объект). Для этого функции обязательно нужно иметь свойство prototype. У стрелочных функций такого свойства нет — оно отсутствует, потому что они не предназначены для создания экземпляров.
Кроме того, стрелочные функции не имеют собственного arguments и не могут быть использованы с yield (не являются генераторами). Все эти ограничения делают их несовместимыми с оператором new.
const Arrow = () => { this.x = 1; };
// TypeError: Arrow is not a constructor
const obj = new Arrow();
function Regular() {
this.x = 1;
}
const obj2 = new Regular(); // работает
console.log(obj2.x); // 1В примере видно, что вызов new Arrow() выбрасывает ошибку, потому что стрелочная функция не имеет prototype и не может быть конструктором. Обычная функция Regular работает корректно.
Стрелочные функции идеально подходят для передачи в качестве колбэков, например, в методах массивов (map, filter) или обработчиках событий, где важно сохранить контекст внешнего объекта. Для создания объектов и классов всегда используйте обычные функции или синтаксис class.
Итог: стрелочные функции — это лёгкий синтаксис для функций без собственного this и prototype, поэтому они не могут вызываться с new. Используйте их для функционального стиля, а для конструкторов — обычные функции или классы.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию