Spec-Zone.ru › JavaScript

TypeError: конструктор производного класса вернул недопустимое значение x

JavaScript-исключение "derived class constructor returned invalid value x" возникает, когда конструктор производного класса возвращает значение, которое не является объектом или undefined.

Сообщение

TypeError: Derived constructors may only return object or undefined (V8-based)
TypeError: derived class constructor returned invalid value 1 (Firefox)
TypeError: Cannot return a non-object type in the constructor of a derived class. (Safari)

Тип ошибки

TypeError

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

Как правило, конструктору не нужно ничего возвращать — значение this автоматически возвращается при создании экземпляра класса. Конструктор также может вернуть объект, и этот объект переопределит this как вновь созданный экземпляр. Однако возврат чего-либо, не являющегося ни объектом, ни undefined, обычно является ошибкой, поскольку это значение игнорируется. В базовых классах и функциональных конструкторах (с использованием синтаксиса function) такое возвращаемое значение молчаливо игнорируется, в то время как в производных классах оно вызывает ошибку.

Примеры

Недопустимые случаи

class Base {
  constructor() {}
}

class Derived extends Base {
  constructor() {
    return 2;
  }
}

new Derived(); // TypeError: derived class constructor returned invalid value 2

Допустимые случаи

class Base {
  constructor() {}
}

class Derived extends Base {
  constructor() {
    return { x: 1 };
  }
}

new Derived(); // { x: 1 }

См. также

  • Классы
  • extends
  • 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/Invalid_derived_return

Spec-Zone.ru

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