実際のプロジェクトでは、通常、コンストラクターを使用してオブジェクトを作成し、一般的に使用されるメソッドをプロトタイプオブジェクトに追加します。最後に、オブジェクトを直接インスタンス化するか、親クラスとして使用し、オブジェクトを宣言し、親クラスを継承します。
今日、私たちはそれを簡単に議論する一般的な方法があります
コードコピーは次のとおりです。
//プレミアムクラス
function person(name){
this.name = name;
};
//サブクラス
function student(sex){
Person.Apply(これ、引数);
this.sex = sex;
};
1。プロトタイプの継承:
コードコピーは次のとおりです。
Student.prototype = person.prototype; person.prototype.constructorが人を指しているため、オブジェクトの割り当ては基本的に参照割り当てであるため、Student.prototype.constructorも人を指します
Student.prototype.constructor = dustent
人のプロトタイプオブジェクトを使用して、学生のプロトタイプオブジェクトを上書きすることです。したがって、学生の変更は本質的に課題です。 。
以下を見てください:
コードコピーは次のとおりです。
Student.prototype.add = function(){alert( "add")};
person.prototype.add(); // popt add
2。継承の例:
コードコピーは次のとおりです。
desute.prototype = new person();
2 Student.prototype.constructor = sustent;
人のインスタンスを使用して、学生のプロトタイプオブジェクトを上書きします。これはメモリの無駄ですが、これは上記の方法の不利な点、つまり学生のプロトタイプの変更も解決します。 Person.Prototype、つまり、サブクラスは親クラスに影響しません。
3.コントロールオブジェクトを使用して1と2の利点を組み合わせて、欠点を排除する
コードコピーは次のとおりです。
var f = function(){};
f.prototype = person.prototype;
Student.prototype = new F();
Student.prototype.constructor = sudent;
Fは空のオブジェクトであり、上記のプロトタイプメソッドのみがあり、インスタンス化するときにメモリを消費するメモリが少なくなり、サブクラスの親クラスへの影響を分離します。