ホームページ ウェブフロントエンド jsチュートリアル JavaScriptによる継承機構のコンストラクタとプロトタイプチェーンのハイブリッドメソッドの使い方を詳しく解説_javascriptスキル

JavaScriptによる継承機構のコンストラクタとプロトタイプチェーンのハイブリッドメソッドの使い方を詳しく解説_javascriptスキル

May 16, 2016 pm 05:34 PM
コンストラクタ

コンストラクターとプロトタイプ実装の継承の欠陥

まず、コンストラクターとプロトタイプ チェーンの継承メソッドの欠点を分析しましょう。

コンストラクター (オブジェクトの偽装) の主な問題は、コンストラクター メソッドを使用する必要があり、プロトタイプを通じて定義されたメソッドを継承できないことです。これは最良の選択ではありません。ただし、プロトタイプ チェーンを使用する場合は、パラメーター化されたコンストラクターを使用できません。開発者はどのように選択するのでしょうか?答えは簡単です。両方を使用してください。

コンストラクタープロトタイプの混合方法

この継承メソッドは、プロトタイプを使用する代わりに、コンストラクターを使用してクラスを定義します。クラスを作成する最良の方法は、コンストラクターを使用してプロパティを定義し、プロトタイプを使用してメソッドを定義することです。このメソッドは継承メカニズムにも適用され、オブジェクトを使用してコンストラクターのプロパティを継承するふりをし、プロトタイプ チェーンを使用してプロトタイプ オブジェクトのメソッドを継承します。これら 2 つのメソッドを使用して前の例を書き直します。コードは次のとおりです。

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

関数 ClassA(sColor) {
this.color = sColor;
}

ClassA.prototype.sayColor = function () {
alert(this.color);
};

関数 ClassB(sColor, sName) {
ClassA.call(this, sColor);
this.name = sName;
}

ClassB.prototype = new ClassA();

ClassB.prototype.sayName = function () {
alert(this.name);
};


この例では、継承メカニズムが 2 行で強調表示されています。青色の実装。最初の強調表示されたコード行の ClassB コンストラクターでは、オブジェクトが ClassA クラスの sColor プロパティを継承するふりをするために使用されています。 2 番目の強調表示されたコード行では、ClassA クラスのメソッドがプロトタイプ チェーンを使用して継承されます。このハイブリッド アプローチではプロトタイプ チェーンが使用されるため、instanceof 演算子は引き続き正しく動作します。

次の例では、このコードをテストします。
コードをコピーします コードは次のとおりです。

var objA = new ClassA("blue");
var objB = new ClassB("red", "John");
objA.sayColor(); //「青」を出力
objB.sayColor(); //「赤」を出力
objB.sayName(); //「ジョン」を出力

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Python のコンストラクター Python のコンストラクター Sep 02, 2023 pm 04:29 PM

Python では、すべてのクラスにコンストラクターがあります。コンストラクターは、クラス内で指定される特別なメソッドです。コンストラクター/イニシャライザーは、クラスの新しいオブジェクトが作成されるときに自動的に呼び出されます。オブジェクトが初期化されるとき、コンストラクターはクラス内のデータ メンバーに値を割り当てます。コンストラクターを明示的に定義する必要はありません。ただし、コンストラクターを作成するには、次の規則に従う必要があります。クラスの場合、コンストラクターは 1 つだけ持つことができます。コンストラクター名は __init__ である必要があります。コンストラクターは、インスタンス プロパティを使用して定義する必要があります (最初の引数として self キーワードを指定するだけです)。 None 以外の値を返すことはできません。構文 classA():def__init__(self):pass 例 次の例を考えてみましょう。

C++ 構文エラー: クラスの外で定義されたコンストラクターは、クラス名を修飾子として追加する必要があります。どのように修正すればよいですか? C++ 構文エラー: クラスの外で定義されたコンストラクターは、クラス名を修飾子として追加する必要があります。どのように修正すればよいですか? Aug 22, 2023 pm 02:00 PM

C++ は広く使用されているオブジェクト指向プログラミング言語です。C++ でクラス コンストラクターを定義する場合、コンストラクターの定義をクラスの外に配置する場合は、コンストラクターの定義に修飾子としてクラス名を追加する必要があります。このコンストラクターがどのクラスに属するかを指定します。これは C++ 構文の基本的なルールです。クラスのコンストラクターを定義するときにこの規則に従わない場合、コンパイル エラーが表示され、「クラス外で定義されたコンストラクターはクラス名で修飾する必要があります。」というメッセージが表示されます。したがって、この種のコンパイル エラーが発生した場合は、次のことを行う必要があります。

Go 言語にはコンストラクターがありますか? Go 言語にはコンストラクターがありますか? Jan 10, 2023 pm 02:15 PM

Go 言語にはコンストラクターがありません。構造化言語としての Go 言語には、オブジェクト指向言語のコンストラクターがありませんが、オブジェクト指向言語のコンストラクターと同様の効果は、構造の初期化プロセスを使用して、オブジェクト指向言語をシミュレートする方法で実現できます。コンストラクターの実装。

コンストラクターとは何ですか? JavaScriptのコンストラクタの詳しい説明 コンストラクターとは何ですか? JavaScriptのコンストラクタの詳しい説明 Aug 04, 2022 pm 03:22 PM

プロトタイプとプロトタイプ チェーンの基礎として、まずコンストラクターとその実行プロセスを理解することは、プロトタイプとプロトタイプ チェーンの知識をよりよく学ぶのに役立ちます。この記事では、JavaScript のコンストラクターについて詳しく説明し、コンストラクターを使用して js オブジェクトを作成する方法を紹介します。

C++ エラー: コンストラクターはパブリック領域で宣言する必要があります。どのように対処すればよいですか? C++ エラー: コンストラクターはパブリック領域で宣言する必要があります。どのように対処すればよいですか? Aug 21, 2023 pm 08:26 PM

C++ プログラミングでは、コンストラクターはクラスのメンバー変数を初期化するために使用される重要な関数です。これは、オブジェクトの適切な初期化を保証するために、オブジェクトの作成時に自動的に呼び出されます。コンストラクターはクラス内で宣言する必要がありますが、「コンストラクターはパブリック領域で宣言する必要があります。」というエラー メッセージが表示される場合があります。このエラーは通常、コンストラクターのアクセス修飾子が間違っていることが原因で発生します。 C++ では、クラスのメンバー変数とメンバー関数には、public、private、protected などのアクセス修飾子があります。

C++ 構文エラー: パラメーターが 1 つしかないコンストラクターは明示的に宣言する必要があります。解決方法は? C++ 構文エラー: パラメーターが 1 つしかないコンストラクターは明示的に宣言する必要があります。解決方法は? Aug 22, 2023 am 09:01 AM

C++ プログラミングでは、次のエラー メッセージが表示される場合があります。 パラメーターが 1 つだけあるコンストラクターは、明示的に宣言する必要があります。このエラー メッセージは初心者を混乱させる可能性があります。次に、C++ における Explicit とは何か、このエラー メッセージが表示される理由、およびこの問題の解決方法を見てみましょう。 C++ における明示的な役割。パラメーターを 1 つだけ受け取るコンストラクターを定義する場合、キーワード explici を使用する必要があります。

C++ 構文エラー: 同じコンストラクター シグネチャが複数回表示されます。解決方法は? C++ 構文エラー: 同じコンストラクター シグネチャが複数回表示されます。解決方法は? Aug 22, 2023 pm 04:49 PM

C++ は強力なプログラミング言語ですが、使用中にさまざまな問題が発生することは避けられません。その中で、同じコンストラクター シグネチャが複数回出現することは、一般的な構文エラーです。この記事では、このエラーの原因と解決策について説明します。 1. エラーの原因 C++では、オブジェクト作成時にオブジェクトのデータメンバを初期化するためにコンストラクタを使用します。ただし、同じコンストラクター シグネチャが同じクラスで定義されている場合 (つまり、パラメーターの型と順序が同じである場合)、コンパイラーはどのコンストラクターを呼び出すかを決定できず、コンパイル エラーが発生します。例えば、

Object() 関数を使用して JavaScript でオブジェクトを作成する方法について話しましょう Object() 関数を使用して JavaScript でオブジェクトを作成する方法について話しましょう Aug 04, 2022 pm 04:32 PM

Object() 関数を使用してオブジェクトを作成するにはどうすればよいですか?次の記事では、Object() コンストラクターを使用してオブジェクトを作成する方法 (他の 3 つのオブジェクト作成方法とともに) を紹介します。

See all articles