JavaScript 類別:初學者指南

你好,未來的 JavaScript 巫師們!今天,我們將踏上一段令人興奮的旅程,探索 JavaScript 類別的世界。別擔心如果你之前從未寫過一行代碼 —— 我將成為你的友好指南,我們會一步步前進。在這個教學的結束時,你將能夠像專家一樣創建自己的類別!

JavaScript - Classes

JavaScript 類別是什麼?

想像你正在建造一個虛擬動物園。你可能不會想為每個動物個別描述,對吧?這就是類別派上用場的地方。類別就像是創建物件的藍圖。它定義了該類型的所有物件應該具有哪些屬性和行為。

讓我們從一個簡單的例子開始:

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

makeSound() {
console.log("這個動物發出了聲音");
}
}

在這個例子中,Animal是我們的類別。這就像是在說:"我們動物園中的每個動物都將有一個名字、一個種類,以及發出聲音的能力。"

定義 JavaScript 類別

在 JavaScript 中定義類別,我們使用 class 關鍵字,然後跟隨類別的名稱。類別名稱通常以大寫字母開頭 —— 這不是必需的,但這是一個常見的慣例,有助於區分類別和其他類型的代碼。

constructor() 方法

constructor() 方法是一個特殊的創建和初始化用類別創建的物件的方法。當我們從這個類別創建一個新物件時,它會自動被調用。

class Book {
constructor(title, author, year) {
this.title = title;
this.author = author;
this.year = year;
}
}

在這裡,title、author 和 year 是每個 Book 物件將具有的屬性。this 關鍵字指的是正在被創建的物件。

創建 JavaScript 物件

現在,我們有了我們的類別,來創建一些物件吧!

let myBook = new Book("了不起的蓋茨比", "F. 斯科特·菲茨傑拉德", 1925);
console.log(myBook.title); // 輸出:了不起的蓋茨比

new 關鍵字用於創建我們 Book 類別的新實例。這就像是在說:"嘿,JavaScript,請根據這個 Book 藍圖為我創造一本新書!"

JavaScript 類別方法

方法是屬於類別的函數。它們定義了類別物件可以執行的行為。

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

bark() {
console.log(`${this.name} 說:汪汪!`);
}

fetch(item) {
console.log(`${this.name} 抓到了 ${item}`);
}
}

let myDog = new Dog("巴迪");
myDog.bark(); // 輸出:巴迪 說:汪汪!
myDog.fetch("球"); // 輸出:巴迪 抓到了 球

在這個例子中,bark() 和 fetch() 是 Dog 類別的方法。我們創建的每個 Dog 物件都將具有這些能力。

JavaScript 類別的類型

JavaScript 支援兩種主要的類別類型:

  1. 宣告:這是我們至今一直在使用的。

    class Rectangle {
    // 類別體
    }
  2. 表達式:類別也可以在表達式中定義。

    let Rectangle = class {
    // 類別體
    };

兩者都達到相同的效果,但類別宣告更為常見且易於閱讀。

JavaScript 類別提升

與函數宣告不同,類別宣告不會被提升。這意味著在您的代碼中,您不能在類別定義之前使用它。

// 這將會拋出一個錯誤
let p = new Rectangle(); // 參考錯誤

class Rectangle {}

總是在使用它們之前定義你的類別!

與類別一起使用嚴格模式

這裡有一個有趣的知識:類別的體总是執行在嚴格模式下。這意味著什麼呢?這就像有一個嚴格的老師不讓你馬虎代碼。例如:

class StrictClass {
method() {
undeclaredVariable = 5; // 這將會拋出一個錯誤
}
}

在嚴格模式下,你必須在使用前聲明你的變量。這有助於捕獲常見的編碼失誤並保持代碼的乾淨!

類別方法表

這裡有一個方便的表格,列出了一些常見的與類別相關的方法:

方法 描述
constructor() 初始化類別的新實例
static 為類別定義一個靜態方法
extends 創建另一個類別的子類別
super 調用父類別的構造函數
get 定義一個 getter 方法
set 定義一個 setter 方法

結論

恭喜你!你剛剛踏出了進入 JavaScript 類別世界的第一步。記住,就像學習任何新技能一樣,熟能生巧。嘗試創建你自己的類別 —— 也許是一個有 startEngine() 和 drive() 方法的 Car 類別,或者是一個有 useSpecialPower() 方法的 Superhero 類別。

類別是 JavaScript 中的強大工具,讓你可以創建有組織、可重用的代碼。它們就像是編程的樂高積木 —— 狀獨自的時候很簡單,但當它們組合在一起時,能夠建造出令人驚奇的事物。

持續編程,持續學習,在你意識到之前,你將能夠輕鬆地構建複雜的應用程序。快樂編程,未來的開發者!

Credits: Image by storyset