主導 JavaScript 中的物件導向程式設計 (OOP)。
介紹
物件導向程式設計 (OOP) 是建構結構良好、模組化和可重複使用程式碼的基礎。雖然 JavaScript 最初是過程性的,但 ES6 及更高版本引入了 OOP 語法,使其成為掌握函數式和物件導向範例的理想語言。本文涵蓋了 JavaScript 中的基本 OOP 概念,包括類別、繼承、多態性和抽象,以及 JavaScript 特定的功能,例如原型繼承和物件組合。
JavaScript 中 OOP 的關鍵概念
1.封裝:
封裝允許對物件內的資料和方法進行分組,限制對物件狀態的直接存取。這可以保護資料免受意外修改並允許受控互動。
class Car { constructor(make, model) { this.make = make; this.model = model; this._engineOn = false; } startEngine() { this._engineOn = true; console.log(`${this.make} ${this.model} engine started.`); } stopEngine() { this._engineOn = false; console.log(`${this.make} ${this.model} engine stopped.`); } } const myCar = new Car("Toyota", "Corolla"); myCar.startEngine(); // Output: Toyota Corolla engine started.
2.繼承:
繼承允許基於父類別建立子類,允許程式碼重複使用和定義層次結構。
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 myDog = new Dog("Max"); myDog.speak(); // Output: Max barks.
3.多態性:
多態性讓不同的類別響應相同的函數或方法呼叫。 JavaScript 透過方法重寫實現多態性。
class Printer { print() { console.log("Printing document..."); } } class PDFPrinter extends Printer { print() { console.log("Printing PDF document..."); } } const printer = new Printer(); const pdfPrinter = new PDFPrinter(); printer.print(); // Printing document... pdfPrinter.print(); // Printing PDF document...
4.摘要:
抽象透過僅暴露必要的部分來簡化複雜的系統。 ES2020引入了帶有#的私有字段,允許封裝在類別中。
class Account { #balance; constructor(initialBalance) { this.#balance = initialBalance; } deposit(amount) { this.#balance += amount; } getBalance() { return this.#balance; } } const myAccount = new Account(1000); myAccount.deposit(500); console.log(myAccount.getBalance()); // Output: 1500
JavaScript 中基於原型的繼承
JavaScript 是基於原型的,這意味著物件可以直接從其他物件而不是類別繼承。這是透過原型實現的,原型是其他物件繼承方法和屬性的物件。
function Vehicle(type) { this.type = type; } Vehicle.prototype.start = function() { console.log(`${this.type} is starting.`); }; const car = new Vehicle("Car"); car.start(); // Car is starting.
組合優於繼承
組合是繼承的替代方案,您無需在層次結構中建立類,而是建立包含較小的可重複使用物件的物件來實現所需的功能。
const canFly = { fly() { console.log("Flying!"); } }; const canSwim = { swim() { console.log("Swimming!"); } }; function Fish(name) { this.name = name; } Object.assign(Fish.prototype, canSwim); const fish = new Fish("Nemo"); fish.swim(); // Swimming!
JavaScript 中的高階 OOP 模式
1。工廠模式:
工廠模式是一種設計模式,您可以在不指定確切類別的情況下建立物件。它對於封裝物件的建立邏輯很有用。
function createUser(name, role) { return { name, role, describe() { console.log(`${this.name} is a ${this.role}`); } }; } const admin = createUser("Alice", "Administrator"); admin.describe(); // Alice is an Administrator
2。單例模式:
Singleton 是一種設計模式,其中一個類別只有一個實例。它對於創建全域可存取的物件(例如配置或應用程式狀態)非常有用。
const Singleton = (function () { let instance; function createInstance() { return new Object("I am the instance"); } return { getInstance: function () { if (!instance) { instance = createInstance(); } return instance; } }; })(); const instance1 = Singleton.getInstance(); const instance2 = Singleton.getInstance(); console.log(instance1 === instance2); // true
3。觀察者模式:
觀察者模式定義了一種依賴關係,其中一個物件(主題)的變更會導致其他物件(觀察者)的通知。
class Car { constructor(make, model) { this.make = make; this.model = model; this._engineOn = false; } startEngine() { this._engineOn = true; console.log(`${this.make} ${this.model} engine started.`); } stopEngine() { this._engineOn = false; console.log(`${this.make} ${this.model} engine stopped.`); } } const myCar = new Car("Toyota", "Corolla"); myCar.startEngine(); // Output: Toyota Corolla engine started.
挑戰和最佳實踐
1。避免繼承過度使用: 傾向於組合以獲得更好的靈活性和重複使用性。
2.盡量減少副作用: 保持資料封裝以防止意外變更。
3.使用 Object.freeze: 這可以防止不可變物件的意外修改。
在最後
JavaScript 的 OOP 方法提供了一個靈活的混合模型,結合了基於原型的繼承和經典的 OOP。借助 ES6 的進步(例如類別和私人字段),JavaScript 允許開發人員建立複雜的應用程序,同時保持乾淨的程式碼結構。透過掌握 JavaScript 中的 OOP,您可以為實際應用程式建立可擴充、可維護且高效能的程式碼。
我的個人網站:https://shafayet.zya.me
給你的表情包? ? ?
以上是主導 JavaScript 中的物件導向程式設計 (OOP)。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。
