ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript のオブジェクト指向プログラミング (OOP): 包括的なガイド

JavaScript のオブジェクト指向プログラミング (OOP): 包括的なガイド

Barbara Streisand
Barbara Streisandオリジナル
2024-12-30 14:30:14903ブラウズ

Object-Oriented Programming (OOP) in JavaScript: A Comprehensive Guide

JavaScript のオブジェクト指向プログラミング (OOP)


1. オブジェクトとクラス

JavaScript では、オブジェクト はキーと値のペア (プロパティとメソッド) のコレクションです。クラスは、オブジェクトを作成するための設計図として機能します。

例:

// Define a class
class Person {
  constructor(name, age) {
    this.name = name; // Property
    this.age = age;
  }

  greet() { // Method
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

// Create an object
const person1 = new Person('Alice', 25);
person1.greet(); // Output: Hello, my name is Alice and I am 25 years old.

2. カプセル化

カプセル化とは、データ (プロパティ) とそのデータを操作するメソッドを 1 つのユニット (オブジェクト) 内にバンドルすることを意味します。オブジェクトの特定の部分への直接アクセスを制限します。

例:

class BankAccount {
  #balance; // Private field

  constructor(initialBalance) {
    this.#balance = initialBalance;
  }

  deposit(amount) {
    this.#balance += amount;
  }

  getBalance() {
    return this.#balance;
  }
}

const account = new BankAccount(1000);
account.deposit(500);
console.log(account.getBalance()); // 1500
// console.log(account.#balance); // Error: Private field '#balance' not accessible

3. 継承

継承により、クラスは別のクラスからプロパティとメソッドを継承できます。既存のコードの再利用に役立ちます。

例:

class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} makes a noise.`);
  }
}

class Dog extends Animal {
  speak() {
    console.log(`${this.name} barks.`);
  }
}

const dog = new Dog('Buddy');
dog.speak(); // Output: Buddy barks.

4. ポリモーフィズム

ポリモーフィズムとは、複数の形式を持つことを意味します。 OOP では、子クラスのメソッドが親クラスのメソッドと同じ名前を持つことができますが、動作は異なります。

例:

class Shape {
  area() {
    return 0;
  }
}

class Rectangle extends Shape {
  constructor(width, height) {
    super();
    this.width = width;
    this.height = height;
  }
  area() {
    return this.width * this.height;
  }
}

const shape = new Shape();
const rectangle = new Rectangle(10, 5);

console.log(shape.area());       // 0
console.log(rectangle.area());   // 50

5. 抽象化

抽象化によりコードの複雑さが隠蔽され、重要な部分のみがユーザーに表示されます。

例:

class Vehicle {
  startEngine() {
    console.log('Engine started');
  }
}

class Car extends Vehicle {
  drive() {
    console.log('Driving the car...');
  }
}

const car = new Car();
car.startEngine(); // Engine started
car.drive();       // Driving the car...

6. 静的メソッドとプロパティ

静的メソッドとプロパティは、インスタンスではなくクラス自体に属します。

例:

class MathUtils {
  static add(a, b) {
    return a + b;
  }
}

console.log(MathUtils.add(5, 3)); // 8

7. プロトタイプ

JavaScript は、プロトタイプベースの継承 モデルを使用し、オブジェクトは他のオブジェクトからプロパティとメソッドを継承できます。

例:

function Person(name) {
  this.name = name;
}

Person.prototype.greet = function() {
  console.log(`Hello, my name is ${this.name}`);
};

const person = new Person('Alice');
person.greet(); // Hello, my name is Alice

重要なポイント

  1. クラスを使用して、オブジェクトのブループリントを作成します。
  2. #.
  3. を使用してプライベート フィールドでプロパティをカプセル化します。
  4. コードを再利用するには、継承 (拡張) を使用します。
  5. ポリモーフィズムのメソッドをオーバーライドします。
  6. 抽象化を使用して対話を簡素化します。
  7. 静的メソッドとプロトタイプの継承を活用します。

JavaScript の OOP 機能により、開発者はクリーンでモジュール化された再利用可能なコードを作成できます。

こんにちは、アバイ・シン・カタヤットです!
私はフロントエンドとバックエンドの両方のテクノロジーの専門知識を持つフルスタック開発者です。私はさまざまなプログラミング言語やフレームワークを使用して、効率的でスケーラブルでユーザーフレンドリーなアプリケーションを構築しています。
ビジネス用メールアドレス kaashshorts28@gmail.com までお気軽にご連絡ください。

以上がJavaScript のオブジェクト指向プログラミング (OOP): 包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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