Переклад не закінчено. Будь ласка, допоможіть перекласти цю статтю з англійської.

Повідомлення

TypeError: "x" is not a constructor

TypeError: Math is not a constructor
TypeError: JSON is not a constructor
TypeError: Symbol is not a constructor
TypeError: Reflect is not a constructor
TypeError: Intl is not a constructor
TypeError: SIMD is not a constructor
TypeError: Atomics is not a constructor

Тип помилки

TypeError

В чому справа?

Була спроба використати об'єкт чи змінну як конструктор, але сам об'єкт чи змінна не є конструктором. Дивись constructor чи new operator для більш детальної інформації.

У JavaScript існує багато глобальних об'єктів, наприклад String чи Array, які можуть створюватись конструкторами використовуючи синтаксис new. Однак, деякі глобальні об'єкти не можуть, їх властивості і методи статичні. Наступні об'єкти являються стандартом JavaScript, вони вбудовані і не мають конструкторів: Math, JSON, Symbol, Reflect, Intl, SIMD, Atomics.

Генератори функцій не можуть використовуватись також.

Приклади

Помилкові випадки

var Car = 1;
new Car();
// TypeError: Car не має конструктора

new Math();
// TypeError: Math не є конструктором

new Symbol();
// TypeError: Symbol не є конструктором

function* f() {};
var obj = new f;
// TypeError: f не є конструктором

Конструктор Car

Для того щоб створити класс-конструктор, потрібно вказати його як функцію. В дужках ви можете вказати його статичні методи, наприклад виробника, модель, рік створення автомобілю. Щоб зробити це опишіть свою модель наступним чином:

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

Тепер ви можете створювати об'єкти классу Car, наприклад mycar:

var mycar = new Car('Eagle', 'Talon TSi', 1993);

In promises

When returning an immediately-resolved or immediately-rejected Promise, you do not need to create a new Promise(...) and act on it.

This is not legal (the Promise constructor is not being called correctly) and will throw a TypeError: this is not a constructor exception:

return new Promise.resolve(true);

Instead, use the Promise.resolve() or Promise.reject() static methods:

// This is legal, but unnecessarily long:
return new Promise((resolve, reject) => { resolve(true); })

// Instead, return the static method:
return Promise.resolve(true);
return Promise.reject(false);

Дивись також

Мітки документа й учасники

 Зробили внесок у цю сторінку: cloudgnome
 Востаннє оновлена: cloudgnome,