このコードを考えると:
var SuperClass = function(a, b) {
this.a = a;
this.b = b;
};
SuperClass.prototype.getA = function() {
return this.a;
};
var SubClass = function(a, b, c) {
SuperClass.call(this, a, b);
this.c = c;
};
プロトタイプを開始するためにSubClass
、ほとんどの推奨事項は次のようです。
SubClass.prototype = new SuperClass();
のプロトタイプとして機能するためだけにSuperClass
、(独自のa
とプロパティを持つ) 新しいオブジェクトを作成 (インスタンス化) するのは奇妙に思えます。b
SubClass
これも機能します:
// anti-pattern
SubClass.prototype = SuperClass.prototype;
SuperClass.prototype
ただし、参照によってオブジェクトを渡すため、 に追加するものSubClass.prototype
はすべて にも追加されSuperClass.prototype
ます。これらは同じオブジェクトであるためです。これは、ほとんどの場合、予期された動作ではありません。
質問:のベース プロトタイプSuperClass
として機能するのインスタンスを作成せずに、適切なプロトタイピングを行う方法はありますか?SubClass