JavaScript 類(Class)是指面向對象編程中的一個重要概念,它是一種將數據和方法包含在一起的抽象數據類型。
在 JavaScript 中,我們可以使用 class 關鍵詞來定義一個類。類定義的語法如下:
class 類名 { constructor() { // 類的構造函數 } 方法1() { // 類的方法1 } 方法2() { // 類的方法2 } ... }
在類的定義中,constructor 是類的構造函數,用于初始化類的屬性和方法。除 constructor 以外,其他的方法均為類的自定義方法,我們也可以在其中定義類的屬性。
class Person { constructor(name, age) { this.name = name; this.age = age; } sayHi() { console.log(`Hello, my name is ${this.name}.`); } } const john = new Person('John', 20); john.sayHi(); // 輸出:Hello, my name is John.
在上述代碼中,我們定義了一個名為 Person 的類,其構造函數接收兩個參數,分別為 name 和 age。在 constructor 中,我們使用 this 關鍵字來引用類的屬性。而在 sayHi 方法中,我們使用了模板字符串(template literals)來將 name 屬性輸出。
除了自定義方法之外,類還具有一些內置方法,如 toString、valueOf、hasOwnProperty 等。這些方法可以直接在類的實例上調用,如:
class Animal { constructor(name) { this.name = name; } toString() { return `My name is ${this.name}.`; } } const dog = new Animal('Dog'); console.log(dog.toString()); // 輸出:My name is Dog.
在上述代碼中,我們定義了一個名為 Animal 的類,并在 toString 方法中使用了模板字符串來輸出 name 屬性。我們還創建了一個名為 dog 的 Animal 實例,并調用了它的 toString 方法。
除此之外,我們也可以使用 extends 關鍵詞來實現繼承。如下所示:
class Person { constructor(name) { this.name = name; } sayHi() { console.log(`Hello, my name is ${this.name}.`); } } class Student extends Person { constructor(name, grade) { super(name); this.grade = grade; } sayGrade() { console.log(`My grade is ${this.grade}.`); } } const john = new Student('John', 3); john.sayHi(); // 輸出:Hello, my name is John. john.sayGrade(); // 輸出:My grade is 3.
在上述代碼中,我們定義了兩個類,Person 和 Student。Student 繼承自 Person,使用了 super 關鍵字來調用父類的構造函數。
總的來說,JavaScript 類在面向對象編程中扮演著重要的角色,它可以幫助我們封裝數據和方法,使得代碼更加模塊化和易于維護。