首頁 >web前端 >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. 封裝

封裝意味著將資料(屬性)和操作資料的方法捆綁在單一單元(物件)內。它限制對物件的某些部分的直接存取。

例子:

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 功能可讓開發人員編寫乾淨、模組化且可重複使用的程式碼。

嗨,我是 Abhay Singh Kathayat!
我是一名全端開發人員,精通前端和後端技術。我使用各種程式語言和框架來建立高效、可擴展且用戶友好的應用程式。
請隨時透過我的商務電子郵件與我聯繫:kaashshorts28@gmail.com。

以上是JavaScript 中的物件導向程式設計 (OOP):綜合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn