1. はじめに継承を学習する前に、プロトタイプ チェーンについてある程度理解しておく必要があります。 理解できない場合は、プロトタイプ チェーンについてより詳しく説明している私の別の記事「JavaScript プロトタイプ チェーンの詳細な説明」をまず読んでみてください。 すでに理解している場合は、そのまま続けてください。 以前、継承方法を全て列挙したブログ記事を書きましたが、一度に読むには長すぎて知識の吸収に役立たないと感じたので、最初に複合継承部分を分離し、後で寄生部分を補うことにしました。 2. プロトタイプチェーン継承親クラスのインスタンスは、子クラスのプロトタイプとして使用されます。子クラスによって作成された2つのインスタンスの暗黙的なプロトタイプ コードを明確に理解するには、次の図を読んでください。 // 父クラス関数 father() { this.fatherAttr = ["fatherAttr"]; } //親クラスのプロトタイプのプロパティ father.prototype.checkProto = "checkProto"; //サブクラス関数 child() {} // 父インスタンスを子コンストラクタのプロトタイプとして使用します。child.prototype = new father(); child.prototype.constructor = 子; // 2 つのサブクラスインスタンス const test1 = new child(); const test2 = 新しい子(); console.log("テスト1:"); コンソールにログ出力します。 コンソールにログ出力します。 コンソールにログを記録します。 コンソールにログを記録します。 console.log("テスト2:"); test1.fatherAttr.push("newAttr"); コンソールにログを記録します。 コンソールにログを記録します。 console.log("テスト3:"); コンソールにログ出力します。 特徴:
3. コンストラクタの継承
// 父クラス関数 father(params) { this.fatherAttr = ["fatherAttr"]; this.params = パラメータ; } //親クラスのプロトタイプのプロパティ father.prototype.checkProto = "checkProto"; //サブクラス関数 child(params) { 父親を呼び出します(これ、パラメータ); } // 2 つのサブクラスインスタンス const test1 = new child("params1"); const test2 = 新しい子("params2"); console.log("テスト1:"); コンソールにログ出力します。 コンソールにログ出力します。 コンソールにログを記録します。 コンソールにログを記録します。 console.log("テスト2:"); test1.fatherAttr.push("newAttr"); コンソールにログを記録します。 コンソールにログを記録します。 console.log("テスト3:"); コンソールにログ出力します。 特徴:
4. 組み合わせ継承プロトタイプチェーン継承とコンストラクター継承を組み合わせることで、2つの継承の特性に応じて使い分けることができます。 // 父クラス関数 father(params) { this.fatherAttr = ["fatherAttr"]; this.params = パラメータ; } //親クラスのプロトタイプのプロパティ father.prototype.checkProto = "checkProto"; //サブクラス関数 child(params) { //親クラスのコンストラクターへの 2 回目の呼び出し father.call(this, params); } // 親インスタンスを子コンストラクターのプロトタイプとして使用します。child.prototype = new father(); // 親クラスのコンストラクターが初めて呼び出されます。child.prototype.constructor = child; // 2 つのインスタンス const test1 = new child("params1"); // ここからサブクラスのコンストラクターにジャンプし、親クラスのコンストラクターを 2 回目に呼び出します const test2 = new child("params2"); console.log("テスト1:"); コンソールにログ出力します。 コンソールにログ出力します。 コンソールにログを記録します。 コンソールにログを記録します。 console.log("テスト2:"); test1.fatherAttr.push("newAttr"); コンソールにログを記録します。 コンソールにログを記録します。 console.log("テスト3:"); コンソールにログ出力します。 console.log("テスト4:"); test1.fatherAttr を削除します コンソールにログ出力します。 コンソールにログを記録します。 特徴:
JavaScript の組み合わせと継承の詳細な説明はこれで終わりです。JavaScript の組み合わせと継承に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL GTID マスターとスレーブの不一致を修復するソリューション
>>: 垂直方向の中央揃えをエレガントに実現する方法を教えます(推奨)
目次1. ウィンドウ関数とは何ですか? 1. ウィンドウをどのように理解しますか? 2. ウィンドウ...
この記事では、ランダムロールコーラーを実装するためのJavaScriptの具体的なコードを参考までに...
序文最近、小さなプログラムを開発しているときに、このような問題に遭遇しました。ユーザーが認証をクリッ...
環境の準備1. 環境構築React Native 中国語ウェブサイト2. 開発ツール フロントエンド...
今日は、初心者の次のような質問に答えます。学ぶ勇気さえあれば、自分のウェブサイトを構築するのは簡単で...
IOSデータベースアップグレードデータ移行の詳細な例まとめ:昔、データベースのバージョン アップグレ...
Webページを作るときに、区切り線hrを使うことがありますが、IE6やIE7で表示するのは非常に苦痛...
この記事の例では、星のきらめき効果を実現するためのjsの具体的なコードを共有しています。具体的な内容...
多くのプロジェクトでは、中央に灰色の分割線があり、両側に分割線がないグリッド表示の機能を実装する必要...
まとめHTML: 要素と v-cloak CSS: [v-cloak]{表示: なし}プロセスページ...
目次1. ラベルステートメントの紹介2. ラベルステートメントの使用序文:日常の開発では、プログラム...
MySQL テーブルのテーブル構造をすばやく変更する - 「MySQL 管理」から抜粋 ALTER ...
ページデータの表示には Vue などの js のデータバインディング機構が使用されるため、クローラー...
ウェブサイトを最適化するときは、エラー ページの使い方を学ぶ必要があります。たとえば、ウェブサイトに...
1. 以前 QT5.13 バージョンをダウンロードしましたが、インストール後、Qtcreator を...