PrototypicalInheritanceを使用するJavaScriptプロジェクトに取り組んでいます。私がそれを使用することに決めた方法は次のとおりです。
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();
継承に重点を置いて。
MySubClass.prototype = new MySuperClass();
これに関する問題は、各クラス(スーパーとサブ)のコンストラクターにconsole.logを配置すると、スーパークラスが2回呼び出されることです。1回はパラメーターなしでサブクラスに渡され、もう1回はパラメーター付きです。サブクラスのコンストラクターで「コンストラクターが盗まれた」場合。
これらのパラメーターを保存しようとすると、エラーが発生する可能性があります(つまり、空のパラメーターを処理するためのロジックを追加する必要があります)。
今私がこれを行う場合:
var MySubClass = function (param) {
MySuperClass.call(this, param);
};
MySubClass.prototype = MySuperClass;
MySubClass.prototype.constructor = MySubClass;
すべてが正しく機能しているように見えますが、(私のグーグルで)これを行う人を見たことがありません。
誰かが私に2番目のものが間違っているかどうかとその方法(Crockford継承関数に似ているようです)と、1番目のものが2回発火しないように修正する方法を説明できますか?