この記事は編集レビューを必要としています。ぜひご協力ください。
メッセージ
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
エラータイプ
何がうまくいかなかったのか?
オブジェクト、または変数をコンストラクタとして使おうとしていますが、それらがコンストラクタではありません。コンストラクタとは何かについては、constructor か new
演算子を見てください。
String
や Array
のような、new
を使用して生成できる数多くのグローバルオブジェクトがあります。しかし、いくつかのグローバルオブジェクトはそうではなく、 それらのプロパティやメソッドは静的です。次の JavaScript 標準ビルトインオブジェクトは、コンストラクタではありません:Math
と JSON
、Symbol
、Reflect
、Intl
、SIMD
、Atomics
。
function* は、いづれかのコンストラクタとして使用することはできません。
例
無効なケース
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
car コンストラクタ
車のためのオブジェクト型を生成するとします。このオブジェクトの型が car
と呼ばれ、make と model、year プロパティを持つとします。これを行うには、次の関数を定義します:
function Car(make, model, year) { this.make = make; this.model = model; this.year = year; }
次のように mycar
と呼ばれるオブジェクトを生成できます:
var mycar = new Car("Eagle", "Talon TSi", 1993);
関連項目
- constructor
new
演算子