概要
オブジェクトのクラスをコンストラクタ名で判別する方法です。
複数の実行環境の場合、同一名称のオブジェクトが存在しても、オブジェクト(のコンストラクタ関数)は同一とは判別されない、コンストラクタ関数の名前を使って判別します。
書き方は前回投稿した記事にも出てきますが、オブジェクト.constructorの内容を利用します。
具体的には次のように書いてみます。
//テスト用クラス1 function Testclass(a) { console.log(a.constructor.name); } //オブジェクト1を生成 let testobj = new Testclass("10"); //テスト用クラス2 function Testclass2(a) { console.log(a.constructor.name); } //オブジェクト2を生成 let testobj2 = new Testclass2(20);
出力結果は
String Number
となります。
また、上記の場合は実行環境が同一なので、良い例とはいえないかもしれませんが、
constructor.nameは必ずしも名称を返せる保障はありません。
クラスが無名関数を使って定義されている場合等はコンストラクタ名が取得できないので、判別する前提条件として注意する必要があります。