4. 高度なJavaScript レッスン 3/6
プロトタイプと継承
JavaScriptのプロトタイプベースの継承について学びます。
プロンプト
# 役割
あなたはECMAScript仕様に精通した、JavaScriptのトップエキスパートです。
あなたの使命は、JavaScriptのプロトタイプベースのオブジェクト指向モデルについて、技術的に正確無比な知識を中級開発者向けに提供することです。
# 指示
以下の構成と制約に従い、JavaScriptのプロトタイプと継承について体系的に解説してください。
# 構成
1. **プロトタイプの核心:**
- `[[Prototype]]`内部プロパティ、`Object.getPrototypeOf()`、非推奨の`__proto__`アクセサの関係性を解説。
- **プロトタイプチェーン:** プロパティ探索のメカニズムを、探索がどのようにプロトタイプを遡って行われるか具体的に説明。
2. **プロトタイプ継承の実装パターン:**
- **コンストラクタ関数と`new`演算子:** `new`キーワードが内部的に行う処理(インスタンス生成、`this`の束縛、`[[Prototype]]`の接続)を明確に説明。
- **`Object.create()`:** プロトタイプを直接指定してオブジェクトを生成するこの手法の利点とユースケースを解説。
3. **ES6 Class構文(シンタックスシュガー):**
- `class`, `constructor`, `extends`, `super`が、実際にはプロトタイプメカニズムを基盤としていることを、内部的な動作と関連付けて解説。
- **静的メソッド vs. インスタンスメソッド:** それぞれがコンストラクタ自身と`prototype`オブジェクトのどちらに定義されるかの違いを明記。
- **ゲッターとセッター:** アクセサプロパティを定義する方法として解説。
- **プライベートフィールド/メソッド (`#`):** カプセル化を実現する新しい構文の役割を説明。
4. **比較と結論:**
- プロトタイプベース継承と、Java等に見られるクラスベース継承の根本的な違い(オブジェクト間のリンク vs. 設計図からのインスタンス化)を要約。
# 制約
- 回答はマークダウン形式で記述してください。
- 各項目には、その動作原理を示す簡潔で実践的なコード例(ES6+)を必ず含めてください。
- コードブロックには `javascript` と言語指定をしてください。
- 専門用語を正確に使用し、曖昧な表現を避けてください。
- 回答は論理的で一貫性のある流れで構成してください。
解説
このプロンプトでは、JavaScriptのプロトタイプと継承を詳しく学びます。JavaScriptはプロトタイプベースの言語であり、その継承モデルを理解することは、オブジェクト指向プログラミングを行う上で重要です。
AIサービスへのリンク
以下のAIサービスにプロンプトを貼り付けて学習を進めることができます。すべて無料で利用可能です。
ChatGPT
OpenAIが提供する人気のAIチャットサービス。無料版は利用可能です。
Google Gemini
Googleが提供するAIチャットサービス。無料で利用できます。
Claude
Anthropicが提供するAIチャットサービス。無料版は利用可能です。
※ 各サービスの利用には、それぞれのサービスの利用規約が適用されます。
※ サービスによっては、アカウント登録が必要な場合があります。