TypeError: конструкторы классов должны вызываться с 'new'
Исключение JavaScript "class constructors must be invoked with 'new'" (конструкторы классов должны вызываться с 'new') возникает, когда конструктор класса вызывается без ключевого слова new. Все конструкторы классов должны вызываться с new.
Сообщение
TypeError: Class constructor X cannot be invoked without 'new' (V8-based) TypeError: Class constructors cannot be invoked without 'new' (V8-based) TypeError: class constructors must be invoked with 'new' (Firefox) TypeError: Cannot call a class constructor without |new| (Safari)
Тип ошибки
Что пошло не так?
В JavaScript вызов функции без new и создание экземпляра функции с использованием new — это две разные операции, и функции могут вести себя по-разному в зависимости от того, как они вызваны.
Традиционно функции JavaScript использовались как конструкторы и как обычные функции, и могли определять, как они были вызваны, используя new.target. Однако конструкторы классов всегда являются конструкторами и не могут вызываться как обычные функции.
Примеры
Некорректные случаи
class X {}
X(); // TypeError: class constructors must be invoked with 'new'
Корректные случаи
class X {}
new X();
См. также
- Классы
new
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Class_ctor_no_new