隨著JavaScript的不斷發展,類(class)這一概念也逐漸在JavaScript中被正式接受。類是一種抽象的概念,用于創建具有相似屬性和方法的對象。在ES6中,JavaScript正式引入了類(class)關鍵字來支持類的定義,并且類也成為JavaScript程序員經常使用的一種特性。
類(class)的使用方式與其他面向對象語言如Java、C#等語言極為相似,使用"class"關鍵字即可定義一個類,如下所示:
class Person { constructor(name, age) { this.name = name; this.age = age; } sayHello() { console.log(`Hello, my name is ${this.name}, I'm ${this.age} years old.`); } }
以上代碼中,我們使用"class"關鍵字定義了一個名為"Person"的類。類中有一個特殊的方法"constructor",用于在創建對象時初始化對象的屬性值。這里,我們使用了兩個參數"name"和"age",分別用于初始化對象的"name"和"age"屬性。在類中,我們還定義了一個"sayHello"方法,用于打印出對象的信息。
定義好類后,我們就可以使用"new"關鍵字實例化一個對象:
const person = new Person("Tom", 18); person.sayHello(); // Hello, my name is Tom, I'm 18 years old.
除了定義實例方法,類還可以定義靜態方法和訪問器。
靜態方法
靜態方法在類定義中使用"static"關鍵字進行定義,靜態方法屬于類本身,而不是類的實例。
class Calculator { static add(a, b) { return a + b; } static subtract(a, b) { return a - b; } static multiply(a, b) { return a * b; } static divide(a, b) { return a / b; } } console.log(Calculator.add(5, 3)); // 8 console.log(Calculator.subtract(5, 3)); // 2 console.log(Calculator.multiply(5, 3)); // 15 console.log(Calculator.divide(6, 3)); // 2
訪問器
訪問器是一種特殊的方法,用于獲取和設置對象中的屬性值,訪問器在類定義中使用"get"和"set"關鍵字進行定義。我們來看一個例子:
class Rectangle { constructor(width, height) { this.width = width; this.height = height; } get area() { return this.width * this.height; } set size(size) { this.width = size.width; this.height = size.height; } } const rect = new Rectangle(5, 6); console.log(rect.area); // 30 rect.size = { width: 3, height: 4 }; console.log(rect.area); // 12
以上代碼中,我們定義了一個"Rectangle"類,使用"constructor"方法初始化了"width"和"height"屬性。接著,我們定義了一個"area"訪問器方法,用于獲取矩形的面積。我們還定義了一個"size"訪問器方法,用于設置矩形的尺寸。
總結:JavaScript 中的類提供了一種更加面向對象的編程方式,可以方便地封裝對象的屬性和方法,是一種非常實用的特性。