概要
オブジェクトのクラスを判定する方法として、constructorを使って調べてみます。
以下、サンプルコードを書きます。
//テスト用クラス1 function Testclass(a) { console.log(a.constructor); } //オブジェクト1を生成 let testobj = new Testclass("10"); //テスト用クラス2 function Testclass2(a) { console.log(a.constructor); } //オブジェクト2を生成 let testobj2 = new Testclass2(20);
出力結果は次のようになります。(出力形式は実行環境により異なります、ここではfirefoxを例に実行しています)
テスト用クラス1の出力と
String() fromCharCode: function fromCharCode() fromCodePoint: function fromCodePoint() length: 1 name: "String" prototype: String { "" } raw: function raw() <prototype>: function ()
上記の出力結果は、引数がStringクラスのオブジェクトということを表しています。
テスト用クラス2の出力
Number() EPSILON: 2.220446049250313e-16 MAX_SAFE_INTEGER: 9007199254740991 MAX_VALUE: 1.7976931348623157e+308 MIN_SAFE_INTEGER: -9007199254740991 MIN_VALUE: 5e-324 NEGATIVE_INFINITY: -Infinity NaN: NaN POSITIVE_INFINITY: Infinity isFinite: function isFinite() isInteger: function isInteger() isNaN: function isNaN() isSafeInteger: function isSafeInteger() length: 1 name: "Number" parseFloat: function parseFloat() parseInt: function parseInt() prototype: Number { 0 } <prototype>: function ()
上記の出力結果は、日k氏ううがNumberクラスのオブジェクトを表しています。
上記の動作から、オブジェクトを生成する時の、引数に指定した値に対し、constructorプロパティを参照できることがわかります。
また、constructorプロパティは、オブジェクト生成時の引数に対してコンストラクタ関数を参照することができます。