JavaScript/Function/prototype/constructor
Function.prototype.constructor は、Function オブジェクトのコンストラクタ関数を参照するプロパティです。このプロパティは、関数オブジェクトがどのコンストラクタ関数によって作成されたかを示します[1]。
構文
編集func.constructor
func: コンストラクタ関数を参照する対象の関数オブジェクト。
例
編集関数のコンストラクタを参照するプログラム
編集以下のプログラムは、Function.prototype.constructor を使用して関数のコンストラクタ関数を参照します。
function greet() { console.log('Hello!'); } console.log(greet.constructor); // [Function: Function]
このプログラムでは、greet 関数のコンストラクタ関数を参照しています。greet.constructor は、Function コンストラクタ関数を参照します。
組み込み関数のコンストラクタを参照するプログラム
編集以下のプログラムは、Function.prototype.constructor を使用して組み込み関数のコンストラクタ関数を参照します。
console.log(Array.constructor); // [Function: Function] console.log(Date.constructor); // [Function: Function] console.log(String.constructor); // [Function: Function]
このプログラムでは、組み込み関数のコンストラクタ関数を参照しています。すべての組み込み関数のコンストラクタは Function コンストラクタ関数です。
注意点
編集- プロトタイプチェーン:
constructorプロパティは、プロトタイプチェーンを通じて継承されます。関数オブジェクトが独自のconstructorプロパティを持たない場合、そのプロトタイプのconstructorプロパティが参照されます。 - 変更可能:
constructorプロパティは変更可能です。関数オブジェクトのconstructorプロパティを変更すると、その関数がどのコンストラクタ関数によって作成されたかを誤解する可能性があります。 - 関数オブジェクト:
Function.prototype.constructorは、関数オブジェクトに対してのみ有効です。他の種類のオブジェクト(例えば配列や日付オブジェクト)に対しては、それぞれのコンストラクタ関数が参照されます。
脚註
編集- ^ これは、関数オブジェクトの生成元を特定するために使用されます。
外部リンク
編集