ホームページ ウェブフロントエンド jsチュートリアル JavaScript学習メモ(10) jsオブジェクト継承_基礎知識

JavaScript学習メモ(10) jsオブジェクト継承_基礎知識

May 16, 2016 pm 05:52 PM
jsオブジェクト 継承する

1. プロトタイプチェーン
//単独で使用されることはほとんどありません

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

コードを表示
//属性プロパティとメソッド getSuperValue
function SuperClass() {
this.property = true;
}
SuperClass を定義します。 prototype.getSuperValue = function() {
return this.property;
}

// 属性 subproperty と後で追加されるメソッド getSubValue を持つ SubClass クラスを定義します。
function SubClass( ) {
this.subproperty = false;
}

//SubClass クラスは SuperClass クラスを継承します
SubClass.prototype = new SuperClass();メソッド getSubValue
SubClass.prototype.getSubValue = function() {
return this.subproperty;
}

//SubClass クラスのインスタンスを作成します
var instance = new SubClass();
alert(instance.getSuperValue());


2. プロトタイプとインスタンスの間の関係を決定する
最初の方法は、instanceof 演算子を使用することです。インスタンスとプロトタイプ チェーンをテストします。コンストラクター


コードをコピーします。 コードは次のとおりです。
alert (instanceinstanceofObject); //true、インスタンスは Object のインスタンスですか?
alert(instanceinstanceofSuperClass); //true、インスタンスは SuperClass のインスタンスですか? // true、インスタンスは SubClass のインスタンスですか?


2 番目の方法は、isPrototypeOf() メソッドを使用して、プロトタイプ チェーンに表示されるプロトタイプをテストすることです


コードをコピーします コードは次のとおりです。 alert(Object.prototype.isPrototypeOf(instance)) //true
alert( SuperClass.prototype.isPrototypeOf(instance)); //true
alert(SubClass.prototype.isPrototypeOf(instance)); //true


3.チェーン継承
メソッドが定義される順序:



コードをコピー コードは次のとおりです: コードの表示
function SuperClass() {
this.property = true;
}
SuperClass.prototype.getSuperValue = function() {
return this.property; >}

function SubClass() {
this.subproperty = false ;
}

//SubClass は SuperClass を継承します
SubClass.prototype = new SuperClass() / /これを最初に記述し、新しく追加したメソッドとスーパークラスをオーバーライドするメソッドは後で記述する必要があります。そうしないと、オーバーライドされたスーパークラス メソッドは

//新しいメソッド
SubClass を呼び出すことができなくなります。 prototype.getSubValue = function() {
return this.subproperty;
}
//スーパークラスメソッドをオーバーライドします
SubClass.prototype.getSuperValue = function() {
return false; 🎜>}
varinstance = new SubClass();
alert(instance.getSuperValue()); // false、ここでの SubClass のインスタンスは SubClass の getSuperValue() メソッドを呼び出しますが、getSuperValue() はブロックされます。
//SuperClass メソッドを使用すると、SuperClass の getSuperValue() メソッドが呼び出されます


プロトタイプ チェーン継承の欠点: 1) スーパー クラスでプロパティを共有する、2) 共有できないサブクラスの作成時にスーパークラスのコンストラクターにパラメーターを渡します。すべてのプロトタイプ チェーンは単独で使用されることはほとんどありません

4. コンストラクターの借用
//単独で使用されることはほとんどありません

利点: パラメーターをスーパー クラスに渡すことができます。欠点: 関数は再利用できません。すべてのクラスはコンストラクター パターンを使用する必要があります。




コードをコピー
コードは次のとおりです: コードの表示 function SuperClass(name) { this.name = name;
}
function SubClass(){
SuperClass.call(this,"RuiLiang") ; / /スーパークラスを継承し、パラメータをスーパークラスに渡します
this.age = 29; //インスタンス属性

var instance = new SubClass(); ; //RuiLiang
alert(instance.age); //29


6. 最も一般的に使用される継承パターン




コードをコピー


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

コードの表示
//スーパークラスの作成
function SuperClass(name) {
this.name = name;
this.colors = ["red","blue"," green"];
}
SuperClass.prototype.sayName = function() {
alert(this.name);
}

////サブクラスの作成
function SubClass(name,age) {
SuperClass.call(this,name); //継承された属性
this.age = age; //独自の属性

SubClass. = new SuperClass(); //継承されたメソッド
SubClass.prototype.sayAge = function() { //SubClass は新しいメソッド
alert(this.age); を追加します。 //
varinstance1 = new SubClass("RuiLiang",30);
instance1.colors.push("black"); //"red,blue , green,black"
instance1.sayName(); //"RuiLiang"
instance1.sayAge(); //30

var instance2 = new SubClass("XuZuNan",26);
alert(instance2.colors); //"赤、青、緑"
instance2.sayName() //"RuiLiang"


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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++関数継承の詳しい解説:継承で「基底クラスポインタ」と「派生クラスポインタ」を使うには? C++関数継承の詳しい解説:継承で「基底クラスポインタ」と「派生クラスポインタ」を使うには? May 01, 2024 pm 10:27 PM

関数の継承では、「基底クラス ポインター」と「派生クラス ポインター」を使用して継承メカニズムを理解します。基底クラス ポインターが派生クラス オブジェクトを指す場合、上方変換が実行され、基底クラスのメンバーのみにアクセスされます。派生クラス ポインターが基本クラス オブジェクトを指す場合、下向きキャストが実行される (安全ではない) ため、注意して使用する必要があります。

継承とポリモーフィズムは C++ のクラス結合にどのような影響を与えますか? 継承とポリモーフィズムは C++ のクラス結合にどのような影響を与えますか? Jun 05, 2024 pm 02:33 PM

継承とポリモーフィズムはクラスの結合に影響します。派生クラスは基本クラスに依存するため、継承により結合が増加します。ポリモーフィズムにより、オブジェクトは仮想関数と基本クラス ポインターを通じて一貫した方法でメッセージに応答できるため、結合が軽減されます。ベスト プラクティスには、継承を控えめに使用すること、パブリック インターフェイスを定義すること、基本クラスへのデータ メンバーの追加を回避すること、依存関係の注入を通じてクラスを分離することが含まれます。ポリモーフィズムと依存性注入を使用して銀行口座アプリケーションの結合を軽減する方法を示す実践的な例。

PHP エラーの解決: 親クラスの継承時に問題が発生しました PHP エラーの解決: 親クラスの継承時に問題が発生しました Aug 17, 2023 pm 01:33 PM

PHP エラーの解決: 親クラスの継承時に発生する問題 PHP では、継承はオブジェクト指向プログラミングの重要な機能です。継承により、元のコードを変更することなく、既存のコードを再利用し、拡張および改善できます。継承は開発で広く使用されていますが、親クラスから継承するときにエラーの問題が発生することがあります。この記事では、親クラスから継承するときに発生する一般的な問題の解決に焦点を当て、対応するコード例を示します。質問 1: 親クラスが見つかりません。親クラスの継承処理中に、システムが親クラスを見つからない場合、

C++ 関数の継承の詳細な説明: 継承のエラーをデバッグするには? C++ 関数の継承の詳細な説明: 継承のエラーをデバッグするには? May 02, 2024 am 09:54 AM

継承エラーのデバッグのヒント: 正しい継承関係を確認します。デバッガーを使用してコードをステップ実行し、変数値を調べます。仮想修飾子を正しく使用してください。隠れた相続によって引き起こされる相続ダイアモンド問題を調べてください。抽象クラスに実装されていない純粋仮想関数がないか確認します。

PHP でポリモーフィズムと継承を使用してデータ型を処理する方法 PHP でポリモーフィズムと継承を使用してデータ型を処理する方法 Jul 15, 2023 pm 07:41 PM

PHP でデータ型を処理するためにポリモーフィズムと継承を使用する方法 はじめに: PHP では、ポリモーフィズムと継承は 2 つの重要なオブジェクト指向プログラミング (OOP) 概念です。ポリモーフィズムと継承を使用することで、さまざまなデータ型をより柔軟に処理できます。この記事では、ポリモーフィズムと継承を使用して PHP でデータ型を処理する方法を紹介し、コード例を通じてその実際の応用例を示します。 1. 継承の基本概念 継承はオブジェクト指向プログラミングにおける重要な概念であり、親クラスのプロパティとメソッドを継承できるクラスを作成できます。

継承した Java プログラムを使用して定期預金 (FD) および定期預金 (RD) の利息を計算します 継承した Java プログラムを使用して定期預金 (FD) および定期預金 (RD) の利息を計算します Aug 20, 2023 pm 10:49 PM

継承は、あるクラスのプロパティと動作に別のクラスからアクセスできるようにする概念です。メソッドやメンバ変数を継承するクラスをスーパークラスまたは親クラスと呼び、メソッドやメンバ変数を継承するクラスをサブクラスまたはサブクラスと呼びます。 Javaでは、クラスを継承するために「extends」キーワードを使用します。この記事では、相続を利用して定期預金や定期預金の利息を計算する Java プログラムについて説明します。まず、ローカル マシンの IDE でこれら 4 つの Java ファイル Acnt.java を作成します。このファイルには、金利や金額などの口座詳細を保存するために使用される抽象クラス「Acnt」が含まれます。また、計算用のパラメータ「amnt」を持つ抽象メソッド「calcIntrst」も含まれます。

PHP のパッケージング技術とアプリケーション PHP のパッケージング技術とアプリケーション Oct 12, 2023 pm 01:43 PM

PHP のカプセル化テクノロジとアプリケーションのカプセル化は、オブジェクト指向プログラミングにおける重要な概念であり、外部プログラムに統一されたアクセス インターフェイスを提供するために、データとデータに対する操作を一緒にカプセル化することを指します。 PHP では、アクセス制御修飾子とクラス定義を通じてカプセル化を実現できます。この記事では、PHP のカプセル化テクノロジとそのアプリケーション シナリオを紹介し、いくつかの具体的なコード例を示します。 1. カプセル化されたアクセス制御修飾子 PHP では、カプセル化は主にアクセス制御修飾子によって実現されます。 PHP には 3 つのアクセス制御修飾子が用意されています。

PHPの多重継承 PHPの多重継承 Aug 23, 2023 pm 05:53 PM

継承: 継承は、クラスが他のクラスからプロパティと動作を継承できるようにするオブジェクト指向プログラミング (OOP) の基本概念です。これは、既存のクラスに基づいて新しいクラスを作成し、コードの再利用を促進し、クラス間の階層関係を確立するためのメカニズムです。継承は、「親と子」または「スーパークラスと子」の関係の概念に基づいています。継承するクラスをスーパークラスまたは基底クラスと呼び、スーパークラスを継承するクラスをサブクラスまたは派生クラスと呼びます。サブクラスは、スーパークラスのすべてのプロパティ (変数) とメソッド (関数) を継承し、独自の一意のプロパティとメソッドを追加したり、継承されたプロパティとメソッドをオーバーライドしたりすることもできます。クラスが他のクラスからプロパティと動作を継承できるようにします。それは促進します

See all articles