JavaScript のオブジェクト指向がいまひとつよくわからないので。
まず、クラス定義のようなもの。
//クラス定義相当 function MyClass(x,y) { //フィールド相当 this.x = x; this.y = y; //メソッド相当 this.show = function() { print(this.x , this.y); } } //上のコンストラクタの呼び出し(インスタンス生成) var obj = new MyClass(3,2); obj.show();
これを実行すると
3 2
となります。
これと以下は、同じ結果をもたらします。これが「プロトタイプ継承」です。
//クラス定義相当 function MyClass(x,y) { this.x = x; this.y = y; } MyClass.prototype.show = function() { print(this.x , this.y); } //上のコンストラクタの呼び出し(インスタンス生成) var obj = new MyClass(3,2); //メソッド呼び出し obj.show();
こちらの例の場合では、メソッド show
はオブジェクト obj
の直接のプロパティにはなっていませんが、メソッドの呼び出しができています。他のオブジェクト MyClass.prototype
のプロパティを「継承」しているように見えるので、「プロトタイプ継承」の名前がついています。