Spec-Zone.ru › JavaScript

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)

Тип ошибки

TypeError

Что пошло не так?

В 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API