ホームページ  >  記事  >  ウェブフロントエンド  >  継承で遊ぶJavaScript(3)_JavaScriptスキル

継承で遊ぶJavaScript(3)_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 16:49:131061ブラウズ

まず、非主流の継承 1 つであるインスタンスの継承を見てみましょう。

あまり意味のない話はしません。非主流の継承なので、一般的に使用されないはずです。特定の状況で使用される要素は 1 つだけです。 。インスタンス継承方法は主にコア オブジェクトの継承に使用され、これまでのところコア オブジェクトの継承を解決する唯一の方法でもあります。

コア オブジェクトの継承には、Error オブジェクトなどの特定の値があります。当社では、将来の開発を簡素化するために、独自に Error クラスを実装する必要がある場合があります。このとき、Error を継承するためにインスタンス継承メソッドを使用します。

コードは次のとおりです:

コードをコピー コードは次のとおりです。

function ExtendingError(mes)
{
varinstance=new Error(mes);
instance.NewError=function(){
alert("あなたのエラーは " mes);
}
return インスタンス;
}

それでは、テストしてみましょう:

コードをコピー コードは次のとおりです。

var e=new ExtendingError("あなたの番号1 未満です");
e.NewError();
alert(e.toString());

結果は満足です:

これは、基本的にはコア オブジェクトの継承にのみ使用される、非主流の継承メソッドです。覚えておいてください。
非主流の継承 2: コピー継承方法を見てみましょう。

コピー継承とはその名の通り、コピーによるオブジェクトの継承です。明らかに、それはオブジェクトのプロパティとメソッドです。JavaScript では、クラスは実際には Hashtable であることを覚えていますか?覚えていない場合は、基本に戻って復習してください。しばらくしたら Javascript オブジェクトに関する記事を書くかもしれません。
これを理解すると、コードを確認するだけで簡単に処理できるようになります。
最初に Extend メソッドを作成します。

コードをコピー コードは次のとおりです。

Function.prototype.Extend=function() {
for(var pro in obj)
{
//これは実際には親クラスの属性とメソッドを完全にコピーします
this.prototype[pro]=obj[pro];
}
}

それでは、コードを書いてその使用方法を見てみましょう:

コードをコピー コードは次のとおりです。

function Animal()
{ }
関数 People()
{ }
People.Extend(new Animal())
{ }

目の肥えた人なら、このメソッドの欠点があまりにも明らかであることが一目でわかります。
オブジェクトの属性メソッドを 1 つずつコピーするときに、実際に使用されるのはリフレクションです。詳細については説明しません。反射は効率に悪影響を及ぼします。
プロトタイプの継承と同様に、継承関係が決定されているがパラメータがまだ確定していない場合、親クラスのオブジェクトを初期化する必要があります。

要するに、この方法は通常は使用されません。

それでは、よく使われることについて話しましょう。混合継承!
これは、2 つの主流の継承方法に基づいています。 2 つの継承方法を比較すると、メリットとデメリットが相補的なので扱いやすいので、ぜひ組み合わせてみましょう。

コードをコピー コードは次のとおりです。

function People(name)
{
this.name=name;
this.SayName=function(){
alert("私の名前は " name);
}
}
function Girl(名前,年齢) )
{
//継承を構築します
this.father=People;
this.father(name);
delete this.father;
this. Introduction=function(){
alert("私の名前は " name ".I am" age);
}
}
//プロトタイプ継承
Girl.prototype=new People();
わかりました、 2 つの方法を組み合わせてみましょう。問題は解決しましたか?
var g=new Girl("Xuan",22);
alert(g instanceof People);
g.SayName();
g. Introduction();

テストに合格しました!

これは比較的完璧な解決策ですが、コードが複雑になるため、具体的な解決策は実際には全員の選択に依存します。

これらは Javascript で継承を扱う方法です。今後も私の他の記事に注目していただければ幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。