Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. JavaScript ссылки на ошибки
  5. TypeError: "x" is not a constructor

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

TypeError: "x" is not a constructor

Сообщение

TypeError: Object doesn't support this action (Edge)TypeError: "x" is not a constructorTypeError: Math is not a constructorTypeError: JSON is not a constructorTypeError: Symbol is not a constructorTypeError: Reflect is not a constructorTypeError: Intl is not a constructorTypeError: SIMD is not a constructorTypeError: Atomics is not a constructor

Тип ошибки

TypeError

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

Была попытка использовать объект или переменную как конструктор, однако этот объект или переменная - не конструктор. Смотритеconstructor илиnew operator, чтобы получить больше информации о том, что такое конструктор.

Существует множество глобальных объектов, таких какString илиArray, которые можно построить с использованиемnew. Однако, некоторые глобальные объекты - нельзя, т.к. их свойства и методы статичны. Следующие стандартные встроенные объекты JavaScript - не конструкторы:Math,JSON,Symbol,Reflect,Intl,SIMD,Atomics.

Функции-генераторы также не могут быть использованы как конструкторы.

Примеры

Неправильное использование

js
var Car = 1;new Car();// TypeError: Car is not a constructornew Math();// TypeError: Math is not a constructornew Symbol();// TypeError: Symbol is not a constructorfunction* f() {}var obj = new f();// TypeError: f is not a constructor

Конструктор "car" (автомобиль)

Представьте, что вы хотите создать тип объекта для автомобилей. Вы хотите, чтобы этот тип объектов называлсяcar, и вы хотите, чтобы были свойства для производителя, модели и года выпуска. Чтобы сделать это, вы должны написать следующую функцию:

js
function Car(make, model, year) {  this.make = make;  this.model = model;  this.year = year;}

Теперь вы можете создать объект, который называетсяmycar (мой автомобиль) следующим образом:

js
var mycar = new Car("Лада", "Самара", 1993);

В Промисах

В случае, когда возвращается незамедлительно разрешённый или незамедлительно отклонённый промис, вам не нужно создавать новый промисnew Promise(...) и работать с ним.

Это неправильно (конструктор Promise вызывается неправильно) и будет вызывать исключениеTypeError: this is not a constructor:

js
return new Promise.resolve(true);

Вместо этого используйтестатические методы -Promise.resolve() илиPromise.reject() :

js
// Это допустимо, но слишком длинно, в этом нет необходимости:return new Promise((resolve, reject) => {  resolve(true);});// Вместо этого, возвращайте статический метод:return Promise.resolve(true);return Promise.reject(false);

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp