まず、非メインストリーム継承を見てみましょう:インスタンス継承方法。
私はそれほどナンセンスを言いません。非メインストリームによって継承されるため、頻繁に使用してはなりません。頻繁に使用されておらず、まだ存在するため、特定の機会に使用される要因は1つだけです。インスタンス継承方法は、主にコアオブジェクトの継承に使用され、これまでのコアオブジェクトの継承を解決する唯一の方法でもあります。
コアオブジェクトの継承には一定の値があります。たとえば、エラーオブジェクト。当社は、将来の開発を簡素化するためにエラークラスを実装する必要がある場合があります。この時点で、インスタンス継承方法を使用してエラーを継承する必要があります。
コードは次のとおりです。
コードコピーは次のとおりです。
関数拡張エラー(MES)
{
var instance = new Error(MES);
instance.newerror = function(){
Alert( "Your Error is"+mes);
}
インスタンスを返す;
}
OK、テスト:
コードコピーは次のとおりです。
var e = new ExtendEnderError( "あなたの番号は1未満です");
e.newerror();
alert(e.tostring());
結果は私たちを満たしています:
あまりナンセンスを言わずに、これは基本的にコアオブジェクトの継承にのみ使用される非メインストリーム継承方法です。覚えておいてください!
次に、2番目の非メインストリーム継承:コピー継承方法を見てみましょう。
名前が示すように、コピー継承とは、コピーによるオブジェクトの継承を意味します。何をコピーすればよいですか?それがオブジェクトのプロパティと方法であることは明らかです。 JavaScriptでは、クラスが実際にハッシュテーブルであることをまだ覚えていますか?覚えていない場合は、戻って基本を確認してください。しばらくの間、JavaScriptオブジェクトに関する記事を書くことができます。
これを理解する方が簡単です。コードを見てください。
最初に拡張メソッドを書きます:
コードコピーは次のとおりです。
function.prototype.extend = function(){
for(objのvar pro)
{
//これは実際には、親クラスのプロパティと方法の完全なコピーです
this.prototype [pro] = obj [pro];
}
}
わかりました、それを使用する方法を確認するためにコードを書いてください:
コードコピーは次のとおりです。
function animal()
{}
function people()
{}
people.extend(new Animal())
{}
目の肥えた人は、この方法の欠点があまりにも明白であることを一目で見ることができます。
オブジェクトの属性メソッドを1つずつコピーする場合、実際に反射が使用されます。反射の効率への損害についてはあまり言いません。
プロトタイプの継承と同様に、親オブジェクトを初期化する必要があります。継承関係が決定されますが、パラメーターがまだ不確実である場合、それは再生できません!
要するに、この方法は一般的には使用されていません。
さて、一般的に使用されているものについて話しましょう。混合継承!
これは、2つの主流の継承方法に基づいています。 2つの継承方法を比較すると、2つの継承方法の利点と短所が補完的であることがわかります。そのため、簡単に混ぜることができます!
コードコピーは次のとおりです。
機能担当者(名前)
{
this.name = name;
this.sayname = function(){
アラート( "私の名前は"+name);
}
}
機能ガール(名前、年齢)
{
//建設継承
this.father = people;
this.father(name);
this.fatherを削除します。
this.introduce = function(){
アラート( "私の名前は"+name+"。私は「+age);
}
}
//プロトタイプ継承
girl.prototype = new People();
さて、2つの方法の混合、問題が解決されたかどうかを見てみましょう。
var g = new Girl( "xuan"、22);
アラート(G Instance of People);
g.sayname();
g.introduce();
テストが合格しました!
これは比較的完璧なソリューションですが、コードの複雑さを増加させるため、特定のソリューションは実際のすべての選択に依存します。
これは、JavaScriptでプレイするすべての方法です。誰もが私の他の記事をフォローし続けることを歓迎します。