JavaScript/Function/prototype/constructor
表示
Function.prototype.constructor
は、Function
オブジェクトのコンストラクタ関数を参照するプロパティです。このプロパティは、関数オブジェクトがどのコンストラクタ関数によって作成されたかを示します[1]。
構文
[編集]func.constructor
func
: コンストラクタ関数を参照する対象の関数オブジェクト。
例
[編集]関数のコンストラクタを参照するプログラム
[編集]以下のプログラムは、Function.prototype.constructor
を使用して関数のコンストラクタ関数を参照します。
functiongreet(){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
は、関数オブジェクトに対してのみ有効です。他の種類のオブジェクト(例えば配列や日付オブジェクト)に対しては、それぞれのコンストラクタ関数が参照されます。
脚註
[編集]- ^これは、関数オブジェクトの生成元を特定するために使用されます。