メソッド定義 ~ JavaScript によるオブジェクト指向プログラミング

少し詳しく、新しい情報を混えて、次のページに書き直しました。 プロトタイプとプロトタイプチェーン

前回作成した Person クラスに メソッドを追加します。

実は JavaScript では、どんなオブジェクトでも、オブジェクトが作られた時に、 プロトタイプオブジェクトというのが自動的に作られ、 そのオブジェクトが prototype プロパティに設定されます。

プロトタイプ・オブジェクトにメソッドを追加すれば、 そのオブジェクトのメソッドとして呼び出せます

ではさっそく具体例です。

var Person = function (n) {
	this.name = n;
}

Person.prototype.say_hello = function() {
	alert( 'Hello! My name is ' + this.name + '.' );
}

var p = new Person('Ichiro');

p.say_hello();

それぞれ見て行きましょう。

var Person = function (n) {
	this.name = n;
}

このコードで Person という function オブジェクトを作成します。 function オブジェクトの name プロパティにパラメータ n を設定します。 これは前回説明したとおりです。

Person.prototype.say_hello = function() {
	alert( 'Hello! My name is ' + this.name + '.' );
}

このコードで Person のプロトタイプオブジェクトの say_hello という属性に、 function オブジェクトを設定します。同じ function オブジェクト (つまり Person) の中ですから、コンストラクタで設定した this.name にアクセス可能です。

var p = new Person('Ichiro');

p.say_hello();

ここで Person function オブジェクトを、new 接頭辞付きで実行します。 パラメータには 'Ichiro' という文字列を渡しています。

new 付きで呼び出していますから、これは前回説明したとおり、 新しいオブジェクトを作成し、その新しいオブジェクトに元の function オブジェクト (=つまり Person) のプロトタイプオブジェクトとのリンクが作成されています。

従って、p の say_hello() を呼び出すと、正しく実行されます。

JavaScript によるオブジェクト指向プログラミング 目次 | >> 内部変数 (フィールド) 定義

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説