一文詳解javascript語言中的類(class)
更新時間:2025年04月10日 11:15:06 作者:JiongLJiong
class類是一種抽象的體現(xiàn),用來表示具有相同特性的一類事物,是面向對象編程不可缺少的工具,下面這篇文章主要介紹了javascript語言中類class的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
什么是類?
- 在 JavaScript 中,類(
class)是用于創(chuàng)建對象的模板或藍圖,提供了一種更直觀的方式來定義對象的屬性和行為。類允許你定義對象的結構和功能,并通過實例化類來創(chuàng)建具有相同結構的多個對象。 - 類在 JavaScript 中是隨著 ES6(ECMAScript 2015)引入的,雖然它本質上是語法糖(更容易閱讀的語法),但底層仍然利用了 JavaScript 原本基于原型的繼承機制。
為什么定義類?
- 類提供了一種組織代碼的方式,尤其適合面向對象編程(OOP)的場景。
- 它使代碼更加模塊化、可復用、可擴展。
- 通過類,可以輕松地創(chuàng)建多個對象實例并管理它們的屬性和行為。
如何定義一個類?
以下是 JavaScript 中定義類的語法:
class 類名 {
// 構造函數(shù)(定義類的屬性)
constructor(參數(shù)1, 參數(shù)2, ...) {
this.屬性1 = 參數(shù)1;
this.屬性2 = 參數(shù)2;
}
// 方法(定義類的行為)
方法名() {
// 方法邏輯
}
// 靜態(tài)方法(直接通過類調用,無需實例化)
static 靜態(tài)方法名() {
// 方法邏輯
}
}
// 創(chuàng)建類的實例
const 實例 = new 類名(參數(shù)1, 參數(shù)2);類的用途
- 創(chuàng)建對象的模板:類提供了一種結構化的方式來定義對象的屬性和方法。通過類,可以方便地創(chuàng)建具有相同屬性和行為的多個對象。
- 代碼復用:類支持繼承(
extends),可以通過繼承實現(xiàn)代碼復用。 - 模塊化設計:通過類組織代碼,使代碼更加清晰、易于維護。
- 面向對象編程(OOP):類是 OOP 的核心概念,提供了封裝、繼承、多態(tài)等特性,使代碼更加抽象化和模塊化。
- 用于表示現(xiàn)實世界中的實體(如用戶、訂單、產(chǎn)品)
- 用于封裝特定功能或邏輯
- 用于組織和復用代碼
類中可以包含什么?
1、構造函數(shù)(constructor)
- 用于初始化對象的屬性。
- 每個類只能有一個構造函數(shù)。
- 構造函數(shù)在創(chuàng)建對象時自動調用。
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}2、實例屬性
- 在構造函數(shù)中通過
this關鍵字定義的屬性。 - 每個實例都有獨立的實例屬性。
class Person { constructor(name, age) { this.name = name; // 實例屬性 this.age = age; // 實例屬性 } }
3、實例方法
- 定義在類中的方法,供實例調用。
- 實例方法的
this指向調用它的實例。class Person { constructor(name) { this.name = name; } greet() { console.log(`Hello, my name is ${this.name}`); } } const p = new Person("Alice"); p.greet(); // 輸出: Hello, my name is Alice
4、靜態(tài)方法(static)
- 使用
static關鍵字定義的方法,直接通過類調用,無需實例化。 - 靜態(tài)方法通常用于工具類函數(shù)或無需依賴實例的數(shù)據(jù)。
class MathUtils { static add(a, b) { return a + b; } } console.log(MathUtils.add(3, 5)); // 輸出: 8
5、靜態(tài)屬性(實驗特性)
- 使用
static定義的屬性,直接屬于類,而不是實例。 - 通常用于存儲類的共享數(shù)據(jù)。
class Counter { static count = 0; static increment() { this.count++; } } Counter.increment(); console.log(Counter.count); // 輸出: 1
6、繼承(extends)
- 通過繼承,可以創(chuàng)建一個基于另一個類的新類。
- 子類會繼承父類的屬性和方法。
class Animal { constructor(name) { this.name = name; } speak() { console.log(`${this.name} makes a sound.`); } } class Dog extends Animal { speak() { console.log(`${this.name} barks.`); } } const dog = new Dog("Buddy"); dog.speak(); // 輸出: Buddy barks.
7、私有字段和方法(#)
- 私有字段和方法以
#開頭,只能在類的內(nèi)部訪問。class BankAccount { #balance = 0; deposit(amount) { if (amount > 0) { this.#balance += amount; } } getBalance() { return this.#balance; } } const account = new BankAccount(); account.deposit(100); console.log(account.getBalance()); // 輸出: 100 console.log(account.#balance); // 報錯: 私有字段無法從外部訪問
完整實例
以下是一個完整的類的示例:
class Car {
static totalCars = 0; // 靜態(tài)屬性
constructor(brand, model, year) {
this.brand = brand; // 實例屬性
this.model = model;
this.year = year;
Car.totalCars++; // 增加總數(shù)
}
// 實例方法
describe() {
console.log(`${this.brand} ${this.model} (${this.year})`);
}
// 靜態(tài)方法
static getTotalCars() {
return Car.totalCars;
}
}
// 創(chuàng)建實例
const car1 = new Car("Toyota", "Corolla", 2020);
const car2 = new Car("Honda", "Civic", 2022);
// 調用實例方法
car1.describe(); // 輸出: Toyota Corolla (2020)
car2.describe(); // 輸出: Honda Civic (2022)
// 調用靜態(tài)方法
console.log(Car.getTotalCars()); // 輸出: 2總結
到此這篇關于javascript語言中類(class)的文章就介紹到這了,更多相關js中的類class內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
如何使用ImageDecoder API讓GIF圖片暫停播放
在本文中,我們介紹了如何使用ImageDecoder API來暫停GIF圖像的播放,雖然這需要一些JavaScript編程知識,但它是一個非常強大的技術,可以讓您對GIF圖像進行各種高級操作,感興趣的朋友跟隨小編一起看看吧2023-06-06
mqtt.js?無法連接/錯誤提示?WebSocket?connection?to?‘ws://xxxxx‘?
這篇文章主要介紹了mqtt.js?無法連接/錯誤提示?WebSocket?connection?to?‘ws://xxxxx‘?failed:,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01
純javascript實現(xiàn)的小游戲《Flappy Pig》實例
這篇文章主要介紹了純javascript實現(xiàn)的小游戲《Flappy Pig》,較為詳細的分析了javascript實現(xiàn)小游戲《Flappy Pig》的相關技巧,涉及javascript操作頁面元素移動、碰撞、事件監(jiān)聽與觸發(fā)的相關技巧,需要的朋友可以參考下2015-07-07
javascript限制文本框只允許輸入數(shù)字(曾經(jīng)與現(xiàn)在的方法對比)
很多時候需要用到限制文本框的數(shù)字輸入,試過許多方法,都不太理想,遂決定自己實現(xiàn)一個來玩玩,接下來介紹曾經(jīng)使用過的方法與自定義方法的對比,感興趣的朋友可以了解下啊2013-01-01
Javascript將字符串日期格式化為yyyy-mm-dd的方法
日期格式化相信對于大家來說再熟悉不過,最近工作中自己利用Javascript就寫了一個,現(xiàn)在將實現(xiàn)的代碼分享給大家,希望對有需要的朋友們能有所幫助,感興趣的朋友們下面來一起看看吧。2016-10-10

