JSで継承を行うと、派生クラスで基本クラスのプロパティと重複する追加のプロパティが見つかる。派生クラスに強制的に基本クラスのプロパティを使用させる方法を推測することはできません。私は、私が相続モデルを修正できるように、または私がプロトタイプの継承を使用している方法を変えることができるように、正しい方向に少し押してください。Javascriptプロトタイプの継承により、派生クラスに追加のプロパティが作成される
のは、私は、この典型的な継承機能を開始するとしましょう:
Function.prototype.inheritsFrom = function(parentClassOrObject){
if (parentClassOrObject.constructor == Function) {
this.prototype = new parentClassOrObject; //Normal Inheritance
this.prototype.constructor = this;
this.prototype.parent = parentClassOrObject.prototype;
} else {
this.prototype = parentClassOrObject; //Pure Virtual Inheritance
this.prototype.constructor = this;
this.prototype.parent = parentClassOrObject;
}
return this;
};
あなたはおそらく前にこれを見てきました。
var e = new entity();
e.init("Mickey");
console.log(e.id);
私は私の新しいエンティティクラスのプロパティを調べる...私は今2を持って次のように
function base() {
this.id = 0;
};
base.prototype.init = function (_id){
this.id = _id;
};
function entity(){
};
entity.inheritsFrom(base);
entity.prototype.init = function(_id){
this.parent.init.call(this, _id);
};
は、今、私たちはエンティティクラスを使用します。今、私は次の継承を作成しますID(下記の出力を参照)。明らかにこれは簡単なケースですが、私はこれを動作させるために多くの時間を費やしてきました。
e: entity
id: "Mickey"
__proto__: base
constructor: function entity(){
id: 0
init: function (_id){
parent: base
__proto__: base
なぜ2つのIDがありますか?派生クラスは、基本クラスの 'this.id'を参照しません。