Message
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
Error type
{{jsxref("TypeError")}}
What went wrong?
There was an attempt to use an object or a variable as a constructor, but that object or variable is not a constructor. See {{Glossary("constructor")}} or the new
operator for more information on what a constructor is.
There are many global objects, like {{jsxref("String")}} or {{jsxref("Array")}}, which are constructable using new
. However, some global objects are not and their properties and methods are static. The following JavaScript standard built-in objects are not a constructor: {{jsxref("Math")}}, {{jsxref("JSON")}}, {{jsxref("Symbol")}}, {{jsxref("Reflect")}}, {{jsxref("Intl")}}, {{jsxref("SIMD")}}, {{jsxref("Atomics")}}.
Generator functions cannot be used as constructors either.
Examples
Invalid cases
var Car = 1; new Car(); // TypeError: Car is not a constructor new Math(); // TypeError: Math is not a constructor new Symbol(); // TypeError: Symbol is not a constructor function* f() {}; var obj = new f; // TypeError: f is not a constructor
A car constructor
Suppose you want to create an object type for cars. You want this type of object to be called car
, and you want it to have properties for make, model, and year. To do this, you would write the following function:
function Car(make, model, year) { this.make = make; this.model = model; this.year = year; }
Now you can create an object called mycar
as follows:
var mycar = new Car("Eagle", "Talon TSi", 1993);
See also
- {{Glossary("constructor")}}
new
operator