導入
オブジェクト指向プログラミング (OOP) は、適切に構造化されたモジュール式の再利用可能なコードを構築するための基礎です。 JavaScript は当初は手続き型でしたが、ES6 以降では OOP の構文が導入され、関数型パラダイムとオブジェクト指向パラダイムの両方を習得するのに理想的な言語になりました。この記事では、クラス、継承、ポリモーフィズム、抽象化などの JavaScript の基本的な OOP 概念と、プロトタイプの継承やオブジェクトの合成などの JavaScript 固有の機能について説明します。
JavaScript における OOP の主要な概念
1.カプセル化:
カプセル化により、オブジェクト内のデータとメソッドをグループ化し、オブジェクトの状態への直接アクセスを制限できます。これにより、データが意図しない変更から保護され、制御された操作が可能になります。
class Car { constructor(make, model) { this.make = make; this.model = model; this._engineOn = false; } startEngine() { this._engineOn = true; console.log(`${this.make} ${this.model} engine started.`); } stopEngine() { this._engineOn = false; console.log(`${this.make} ${this.model} engine stopped.`); } } const myCar = new Car("Toyota", "Corolla"); myCar.startEngine(); // Output: Toyota Corolla engine started.
2.継承:
継承により、親クラスに基づいて子クラスを作成できるようになり、コードの再利用と階層の定義が可能になります。
class Animal { constructor(name) { this.name = name; } speak() { console.log(`${this.name} makes a sound.`); } } class Dog extends Animal { speak() { console.log(`${this.name} barks.`); } } const myDog = new Dog("Max"); myDog.speak(); // Output: Max barks.
3.ポリモーフィズム:
ポリモーフィズムにより、異なるクラスが同じ関数またはメソッド呼び出しに応答できるようになります。 JavaScript はメソッドのオーバーライドを通じてポリモーフィズムを実現します。
class Printer { print() { console.log("Printing document..."); } } class PDFPrinter extends Printer { print() { console.log("Printing PDF document..."); } } const printer = new Printer(); const pdfPrinter = new PDFPrinter(); printer.print(); // Printing document... pdfPrinter.print(); // Printing PDF document...
4.抽象化:
抽象化は、必要な部分だけを露出させることで複雑なシステムを単純化します。 ES2020 では # を含むプライベート フィールドが導入され、クラス内でのカプセル化が可能になりました。
class Account { #balance; constructor(initialBalance) { this.#balance = initialBalance; } deposit(amount) { this.#balance += amount; } getBalance() { return this.#balance; } } const myAccount = new Account(1000); myAccount.deposit(500); console.log(myAccount.getBalance()); // Output: 1500
JavaScript におけるプロトタイプベースの継承
JavaScript はプロトタイプベースです。つまり、オブジェクトはクラスではなく他のオブジェクトから直接継承できます。これは、他のオブジェクトがメソッドやプロパティを継承するオブジェクトであるプロトタイプを通じて実現されます。
function Vehicle(type) { this.type = type; } Vehicle.prototype.start = function() { console.log(`${this.type} is starting.`); }; const car = new Vehicle("Car"); car.start(); // Car is starting.
継承よりも構成
合成は、階層内にクラスを作成する代わりに、必要な機能を実現するために、より小さく再利用可能なオブジェクトを含むオブジェクトを作成する、継承の代替手段です。
const canFly = { fly() { console.log("Flying!"); } }; const canSwim = { swim() { console.log("Swimming!"); } }; function Fish(name) { this.name = name; } Object.assign(Fish.prototype, canSwim); const fish = new Fish("Nemo"); fish.swim(); // Swimming!
JavaScript の高度な OOP パターン
1.工場出荷時のパターン:
ファクトリ パターンは、正確なクラスを指定せずにオブジェクトを作成する設計パターンです。これは、オブジェクトの作成ロジックをカプセル化するのに役立ちます。
function createUser(name, role) { return { name, role, describe() { console.log(`${this.name} is a ${this.role}`); } }; } const admin = createUser("Alice", "Administrator"); admin.describe(); // Alice is an Administrator
2.シングルトン パターン:
シングルトンは、クラスにインスタンスが 1 つだけある設計パターンです。これは、構成やアプリケーションの状態など、グローバルにアクセス可能なオブジェクトを作成するのに役立ちます。
const Singleton = (function () { let instance; function createInstance() { return new Object("I am the instance"); } return { getInstance: function () { if (!instance) { instance = createInstance(); } return instance; } }; })(); const instance1 = Singleton.getInstance(); const instance2 = Singleton.getInstance(); console.log(instance1 === instance2); // true
3.オブザーバーパターン:
オブザーバー パターンは、1 つのオブジェクト (サブジェクト) の変更が他のオブジェクト (オブザーバー) への通知につながる依存関係を定義します。
class Car { constructor(make, model) { this.make = make; this.model = model; this._engineOn = false; } startEngine() { this._engineOn = true; console.log(`${this.make} ${this.model} engine started.`); } stopEngine() { this._engineOn = false; console.log(`${this.make} ${this.model} engine stopped.`); } } const myCar = new Car("Toyota", "Corolla"); myCar.startEngine(); // Output: Toyota Corolla engine started.
課題とベストプラクティス
1.継承の過剰使用の回避: 柔軟性と再利用を向上させるために、合成を優先します。
2.副作用の最小限化: 意図しない変更を防ぐためにデータをカプセル化したままにします。
3. Object.freeze の使用: これにより、不変オブジェクトの誤った変更が防止されます。
最後に
JavaScript の OOP へのアプローチは、プロトタイプベースの継承と古典的な OOP を組み合わせた柔軟なハイブリッド モデルを提供します。クラスやプライベート フィールドなどの ES6 の進歩により、開発者は JavaScript を使用して、クリーンなコード構造を維持しながら複雑なアプリケーションを構築できます。 JavaScript で OOP をマスターすると、実際のアプリケーション向けにスケーラブルで保守性が高く、パフォーマンスの高いコードを構築できます。
私の個人ウェブサイト: https://shafayet.zya.me
あなたのためのミーム???
以上がJavaScript のオブジェクト指向プログラミング (OOP) を支配します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

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

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
