私はプロトタイプ継承を使用するJavaScriptプロジェクトで作業しています。私がそれを使用することを決めた方法は以下の通りです:プロトタイプ継承がコンストラクタを2回呼び出す
var MySuperClass = function (param) {
this.prop = param;
};
MySuperClass.prototype.myFunc = function() {
console.log(this.prop);
};
var MySubClass = function (param) {
MySuperClass.call(this, param);
};
MySubClass.prototype = new MySuperClass();
MySubClass.prototype.constructor = MySubClass;
var obj = new MySubClass('value');
obj.myFunc();
継承を重視しています。
問題は、各クラス(スーパーとサブ)のコンストラクタにconsole.logを入れた場合、スーパークラスはサブクラスに渡されたときに一度二度呼び出されます。MySubClass.prototype = new MySuperClass();
サブクラスのコンストラクターで 'コンストラクターを盗まれた'ときは、パラメーターを1回使用します。
これらのパラメータを保存しようとするとエラーが発生する可能性があります。つまり、空のパラメータを処理するロジックを追加する必要があります。
は、私がこれを行う場合今:
var MySubClass = function (param) {
MySuperClass.call(this, param);
};
MySubClass.prototype = MySuperClass;
MySubClass.prototype.constructor = MySubClass;
すべてが正常に動作しているようですが、私は誰もが(私のGoogl'ingで)前にこれを行う見たことがありません。
2番目のものが間違っていると(それはCrockfordの継承関数に似ているように見えます)、どうすれば2番目に発火しないように修正するのですか?これを行う
[ここに「新しい」キーワードを使用する理由は何ですか?](http://stackoverflow.com/questions/12592913/what-is-the-reason-to-use -the-new-keyword-here) – Bergi