掌握JS核心,解鎖面向對象設計模式精髓

提問者:用戶TAAK 發布時間: 2025-06-03 01:12:01 閱讀時間: 3分鐘

最佳答案

引言

JavaScript(JS)作為一種廣泛利用的編程言語,其核心在於其簡潔而機動的語法。控制JS的核心不雅點對深刻懂得面向東西計劃形式至關重要。本文將探究JS的核心不雅點,並以此為基本,深刻剖析面向東西計劃形式的精華。

一、JavaScript核心不雅點

1. 變數跟數據範例

在JS中,變數可能存儲各種數據範例,包含基本數據範例(如數字、字元串、布爾值)跟複雜數據範例(如東西、數組)。懂得這些數據範例及其行動是編寫有效JS代碼的基本。

let num = 5;
let str = "Hello, World!";
let bool = true;
let obj = { name: "John", age: 30 };
let arr = [1, 2, 3, 4];

2. 東西跟原型

JavaScript的東西是基於原型的,這意味著每個東西都持續自另一個東西,平日是Object。原型鏈容許東西的屬性跟方法被持續,從而實現代碼的重用。

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

Person.prototype.sayHello = function() {
  console.log("Hello, my name is " + this.name);
};

let john = new Person("John");
john.sayHello(); // 輸出: Hello, my name is John

3. 函數跟閉包

在JS中,函數是一等公平易近,可能存儲、轉達跟操縱。閉包容許函數拜訪其創建時的感化域中的變數,即便在外部感化域之外。

function createCounter() {
  let count = 0;
  return function() {
    return count++;
  };
}

let counter = createCounter();
console.log(counter()); // 輸出: 0
console.log(counter()); // 輸出: 1

二、面向東西計劃形式

1. 封裝

封裝是將數據跟操縱數據的方法綁縛在一起,以暗藏外部實現細節。這是面向東西編程的核心原則之一。

function BankAccount(balance) {
  let _balance = balance;
  this.getBalance = function() {
    return _balance;
  };
  this.deposit = function(amount) {
    _balance += amount;
  };
  this.withdraw = function(amount) {
    if (_balance >= amount) {
      _balance -= amount;
    }
  };
}

2. 持續

持續容許一個類(子類)持續另一個類(父類)的屬性跟方法。在JS中,經由過程原型鏈實現持續。

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

function Dog(name, breed) {
  Animal.call(this, name);
  this.breed = breed;
}

Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;

Dog.prototype.bark = function() {
  console.log("Woof!");
};

3. 多態

多態容許同一個介面有差其余實現。在JS中,經由過程函數重載或戰略形式實現多態。

function greet(name) {
  console.log("Hello, " + name);
}

function greet(person) {
  console.log("Hello, " + person.getName());
}

let person = {
  getName: function() {
    return "John";
  }
};

greet(person); // 輸出: Hello, John

4. 計劃形式的利用

在JS中,一些罕見的計劃形式包含工廠形式、察看者形式跟戰略形式。這些形式可能幫助處理特定的成績,進步代碼的可讀性跟可保護性。

// 工廠形式
function UserFactory(role) {
  switch (role) {
    case "admin":
      return new Admin();
    case "user":
      return new User();
    default:
      throw new Error("Unknown role");
  }
}

// 察看者形式
class Subject {
  constructor() {
    this.observers = [];
  }

  subscribe(observer) {
    this.observers.push(observer);
  }

  notify() {
    this.observers.forEach(observer => observer.update(this));
  }
}

class Observer {
  update(subject) {
    console.log("Observer updated with subject's state");
  }
}

// 戰略形式
class Calculator {
  constructor(strategy) {
    this.strategy = strategy;
  }

  calculate() {
    return this.strategy.calculate();
  }
}

class AddStrategy {
  calculate() {
    return 5 + 3;
  }
}

class SubtractStrategy {
  calculate() {
    return 5 - 3;
  }
}

結論

控制JavaScript的核心不雅點對深刻懂得面向東西計劃形式至關重要。經由過程封裝、持續、多態等原則,以及利用計劃形式,可能編寫出愈加高效、可保護跟可擴大年夜的代碼。壹直進修跟現實,將有助於解鎖面向東西計劃形式的精華。

相關推薦