JavaScript/Function/prototype
Function.prototype
は、コンストラクタとして使用できる関数インスタンスが持つプロパティです。このプロパティは、その関数がコンストラクタとして呼び出された際に生成されるオブジェクトのプロトタイプを指定します。このプロパティは、関数がコンストラクタとして使用される場合にのみ意味を持ちます[1]。
構文
func.prototype
func
: プロトタイプを確認または設定する対象のコンストラクタ関数。
例
コンストラクタ関数の prototype プロパティを確認するプログラム
以下のプログラムは、Function.prototype
を使用してコンストラクタ関数のプロトタイプを確認します。
function Person(name) { this.name = name; } console.log(Person.prototype); // Person {}
このプログラムでは、Person
コンストラクタ関数の prototype
プロパティを確認しています。Person.prototype
は、Person
コンストラクタ関数によって生成されるオブジェクトのプロトタイプを指定します。
プロトタイプにメソッドを追加するプログラム
以下のプログラムは、Function.prototype
を使用してプロトタイプにメソッドを追加します。
function Person(name) { this.name = name; } Person.prototype.greet = function() { console.log(`Hello, ${this.name}!`); }; const person = new Person('Alice'); person.greet(); // "Hello, Alice!"
このプログラムでは、Person
コンストラクタ関数の prototype
プロパティに greet
メソッドを追加しています。これにより、Person
コンストラクタ関数によって生成されるすべてのオブジェクトは、greet
メソッドを使用できます。
注意点
- コンストラクタ関数:
prototype
プロパティは、コンストラクタとして使用できる関数インスタンスにのみ存在します。通常の関数やアロー関数にはこのプロパティはありません。 - プロトタイプチェーン:
prototype
プロパティは、コンストラクタ関数によって生成されるオブジェクトのプロトタイプチェーンを形成します。これにより、オブジェクトはプロトタイプに定義されたメソッドやプロパティを継承します。 - 変更可能:
prototype
プロパティは変更可能(Writable: true
)ですが、列挙不可(Enumerable: false
)であり、設定不可(Configurable: false
)です。 - デフォルト値: コンストラクタ関数が作成されると、その
prototype
プロパティは自動的に生成されます。このプロトタイプオブジェクトは、constructor
プロパティを持ち、それが元のコンストラクタ関数を参照します。
プロパティ
アクセサ
メソッド
脚註
- ↑ これは、コンストラクタ関数のプロトタイプを指定するために使用されます。