用來定義、描述要創造的物件(object)具有那些屬性、行為的一個表達式。就像是「車子的設計圖」,描述了車子有什麼樣的零件(屬性)和功能(方法)。
class ShibaInu {
constructor(name, color) {
this.name = name,
this.color = color
}
playWith(someone) {
console.log(`${this.color}的${this.name}跟${someone.name}一起玩`)
}
}
class Cat {
constructor(name) {
this.name = name
}
}
const dog = new ShibaInu("小小柴", "棕色")
const catty = new Cat("凱蒂")
dog.playWith(catty)//棕色的小小柴跟 凱蒂一起玩
static
關鍵字static
範例(一):class MathUtils {
// 靜態方法
static add(a, b) {
return a + b
}
// 靜態屬性
static PI = 3.14159
}
// 直接通過類別名稱調用靜態方法
console.log(MathUtils.add(2, 3)) // 輸出: 5
// 直接通過類別名稱訪問靜態屬性
console.log(MathUtils.PI) // 輸出: 3.14159
static
範例(二):(function main() {
// 蘋果的建構函數
class Apple {
constructor(quantity) {
this.quantity = quantity
this.price = 60 // 蘋果的價格固定為60元
}
getTotalPrice() {
return this.quantity * this.price
}
}
// 雞蛋的建構函數
class Egg {
constructor(quantity, isOnSale) {
this.quantity = quantity
this.price = isOnSale ? 3 : 5 // 根據是否特價來設定價格
}
getTotalPrice() {
return this.quantity * this.price
}
}
// 定義 LittleJohn 類別
class LittleJohn {
constructor(name, wallet) {
this.name = name
this.wallet = wallet
}
buy(item) {
const cost = item.getTotalPrice()
if (this.wallet >= cost) {
this.wallet -= cost;
console.log(`${this.name} 購買了 ${item.quantity} 個 ${item.constructor.name},花費了 ${cost} 元,剩餘 ${this.wallet} 元`)
} else {
console.log(`${this.name} 的錢包不足,無法購買 ${item.quantity} 個 ${item.constructor.name}`)
}
}
}
//創建小強物件並進行購買
const littleJohn = new LittleJohn("小強", 300)
// 購買兩個蘋果
const apples = new Apple(2)
littleJohn.buy(apples)
// 如果雞蛋特價,購買一打雞蛋
const isEggOnSale = true // 假設雞蛋特價
if (isEggOnSale) {
const eggs = new Egg(12, isEggOnSale) // 一打雞蛋
littleJohn.buy(eggs)
}
//小強的剩餘錢包金額
console.log(`小強剩餘的錢包金額: ${littleJohn.wallet}元`)
})()
//輸出小強 購買了 2 個 Apple,花費了 120 元,剩餘 180 元
// 小強 購買了 12 個 Egg,花費了 36 元,剩餘 144 元
//小強剩餘的錢包金額: 144元