JavaScript面向對象編程入門:從0到1的奇幻之旅【含代碼示例】

JavaScript面向對象編程入門:從零到英雄的奇幻之旅【含代碼示例】

    • 一、OOP:編程界的哈利·波特
      • 基本概念
      • 類與實例
    • 二、揮舞魔杖:創建類與實例
      • 基本語法
    • 三、繼承與封裝:家族的力量
      • 繼承
      • 封裝
    • 四、實戰與技巧:打造堅固的魔法城堡
      • 性能優化
      • 防范漏洞
    • 五、旅途的終點?新的起點!
      • 結語引發的思考

在JavaScript這片充滿魔法的土地上,面向對象編程(Object-Oriented Programming, OOP)是一位不可或缺的勇士,它以獨特的魅力和強大的能力,助你征服復雜的代碼王國。今天,我們就來一場深入淺出的探險,揭開OOP神秘的面紗,從基礎概念到實戰技巧,讓你的JavaScript技能樹上結滿勝利的果實。

一、OOP:編程界的哈利·波特

基本概念

面向對象編程的核心思想是將數據(屬性)和操作數據的方法(函數)封裝在一起,形成一個獨立的實體,即對象。JavaScript中的對象是動態類型的,意味著你可以隨時添加或修改屬性和方法。

類與實例

  • (Class):類是一個藍圖,定義了創建對象的模板。從ES6起,JavaScript原生支持類語法。
  • 實例:根據類創建的具體對象,每個實例都擁有獨立的屬性和方法。

二、揮舞魔杖:創建類與實例

基本語法

class Wizard {constructor(name, house) {this.name = name; // 屬性this.house = house;}castSpell(spell) { // 方法console.log(`${this.name} from ${this.house} casts ${spell}`);}
}const harry = new Wizard('Harry Potter', 'Gryffindor'); // 實例化
harry.castSpell('Lumos'); // 輸出: Harry Potter from Gryffindor casts Lumos

三、繼承與封裝:家族的力量

繼承

JavaScript支持基于原型鏈的繼承,ES6引入了extends關鍵字,讓繼承變得更直觀。

class HogwartsWizard extends Wizard {constructor(name, house, pet) {super(name, house); // 調用父類構造函數this.pet = pet;}showPetAffection() {console.log(`Hugs ${this.pet} tightly.`);}
}const hermione = new HogwartsWizard('Hermione Granger', 'Gryffindor', 'Crookshanks');
hermione.castSpell('Wingardium Leviosa'); // 繼承自Wizard
hermione.showPetAffection(); // 子類特有方法

封裝

封裝意味著隱藏內部實現細節,只暴露必要的接口。JavaScript通過閉包或#(私有字段提案)實現私有屬性。

class SecretKeeper {#secret; // 私有字段constructor(secret) {this.#secret = secret;}revealSecret() {return this.#secret;}
}const keeper = new SecretKeeper('The Chamber of Secrets');
console.log(keeper.revealSecret()); // 訪問秘密
// keeper.#secret = '非法訪問'; // 錯誤,無法直接修改

四、實戰與技巧:打造堅固的魔法城堡

性能優化

  • 避免過度使用原型查找:直接在實例上定義常用方法可以提高性能。
  • 謹慎使用new:忘記使用new實例化對象可能會導致意料之外的結果。

防范漏洞

  • 輸入驗證:在類的方法中,總是驗證傳入的參數,防止注入攻擊。
  • 保護私有數據:確保敏感數據不被隨意修改或訪問,使用私有字段提案或閉包。

五、旅途的終點?新的起點!

面向對象編程是JavaScript進階之路的關鍵一步,它不僅能夠組織代碼,提升可讀性和可維護性,還能讓你的程序設計思路更加清晰。記住,每個偉大的魔法背后都是無數次的練習與探索。現在,你已經掌握了JavaScript OOP的基本法門,接下來,不妨嘗試在實際項目中施展你的魔法,創造屬于自己的奇跡吧!

結語引發的思考

在你的JavaScript編程旅程中,面向對象編程給你帶來了哪些挑戰和驚喜?你有沒有什么獨特的技巧或實戰經驗想要分享?歡迎在評論區留言,讓我們一起交流,共同進步,成為JavaScript世界的頂級巫師!


歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。


推薦:DTcode7的博客首頁。
一個做過前端開發的產品經理,經歷過睿智產品的折磨導致脫發之后,勵志要翻身農奴把歌唱,一邊打入敵人內部一邊持續提升自己,為我們廣大開發同胞謀福祉,堅決抵制睿智產品折磨我們碼農兄弟!


專欄系列(點擊解鎖)學習路線(點擊解鎖)知識定位
《微信小程序相關博客》持續更新中~結合微信官方原生框架、uniapp等小程序框架,記錄請求、封裝、tabbar、UI組件的學習記錄和使用技巧等
《AIGC相關博客》持續更新中~AIGC、AI生產力工具的介紹,例如stable diffusion這種的AI繪畫工具安裝、使用、技巧等總結
《HTML網站開發相關》《前端基礎入門三大核心之html相關博客》前端基礎入門三大核心之html板塊的內容,入坑前端或者輔助學習的必看知識
《前端基礎入門三大核心之JS相關博客》前端JS是JavaScript語言在網頁開發中的應用,負責實現交互效果和動態內容。它與HTML和CSS并稱前端三劍客,共同構建用戶界面。
通過操作DOM元素、響應事件、發起網絡請求等,JS使頁面能夠響應用戶行為,實現數據動態展示和頁面流暢跳轉,是現代Web開發的核心
《前端基礎入門三大核心之CSS相關博客》介紹前端開發中遇到的CSS疑問和各種奇妙的CSS語法,同時收集精美的CSS效果代碼,用來豐富你的web網頁
《canvas繪圖相關博客》Canvas是HTML5中用于繪制圖形的元素,通過JavaScript及其提供的繪圖API,開發者可以在網頁上繪制出各種復雜的圖形、動畫和圖像效果。Canvas提供了高度的靈活性和控制力,使得前端繪圖技術更加豐富和多樣化
《Vue實戰相關博客》持續更新中~詳細總結了常用UI庫elementUI的使用技巧以及Vue的學習之旅
《python相關博客》持續更新中~Python,簡潔易學的編程語言,強大到足以應對各種應用場景,是編程新手的理想選擇,也是專業人士的得力工具
《sql數據庫相關博客》持續更新中~SQL數據庫:高效管理數據的利器,學會SQL,輕松駕馭結構化數據,解鎖數據分析與挖掘的無限可能
《算法系列相關博客》持續更新中~算法與數據結構學習總結,通過JS來編寫處理復雜有趣的算法問題,提升你的技術思維
《IT信息技術相關博客》持續更新中~作為信息化人員所需要掌握的底層技術,涉及軟件開發、網絡建設、系統維護等領域的知識
《信息化人員基礎技能知識相關博客》無論你是開發、產品、實施、經理,只要是從事信息化相關行業的人員,都應該掌握這些信息化的基礎知識,可以不精通但是一定要了解,避免日常工作中貽笑大方
《信息化技能面試寶典相關博客》涉及信息化相關工作基礎知識和面試技巧,提升自我能力與面試通過率,擴展知識面
《前端開發習慣與小技巧相關博客》持續更新中~羅列常用的開發工具使用技巧,如 Vscode快捷鍵操作、Git、CMD、游覽器控制臺等
《photoshop相關博客》持續更新中~基礎的PS學習記錄,含括PPI與DPI、物理像素dp、邏輯像素dip、矢量圖和位圖以及幀動畫等的學習總結
日常開發&辦公&生產【實用工具】分享相關博客》持續更新中~分享介紹各種開發中、工作中、個人生產以及學習上的工具,豐富閱歷,給大家提供處理事情的更多角度,學習了解更多的便利工具,如Fiddler抓包、辦公快捷鍵、虛擬機VMware等工具

吾輩才疏學淺,摹寫之作,恐有瑕疵。望諸君海涵賜教。望輕噴,嚶嚶嚶
非常期待和您一起在這個小小的網絡世界里共同探索、學習和成長。愿斯文對汝有所裨益,縱其簡陋未及淵博,亦足以略盡綿薄之力。倘若尚存闕漏,敬請不吝斧正,俾便精進!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18583.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18583.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18583.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IT行業的現狀與未來發展趨勢:從云計算到量子計算的技術變革

隨著技術的不斷進步,IT行業已經成為推動全球經濟和社會發展的關鍵力量。從云計算、大數據、人工智能到物聯網、5G通信和區塊鏈,這些技術正在重塑我們的生活和工作方式。本文將深入探討當前IT行業的現狀,并展望未來發展趨勢,旨在為…

vscode當前分支有未提交的修改,但是暫時不想提交,想要切換到另一個分支該怎么辦

當前分支有未提交的修改,但是暫時不想提交,想要切換到另一個分支該怎么辦? 首先,可以將當前修改暫存起來,以便之后恢復 git stash 然后切換到目標分支,例如需求A所在分支 git checkout feat-a-jie 修改完A需求后,需要先切換回之前的分支,例如需求B所在分支 git checkout feat…

免費插件集-illustrator插件-Ai插件-文本對象分行

文章目錄 1.介紹2.安裝3.通過窗口>擴展>知了插件4.功能解釋5.總結 1.介紹 本文介紹一款免費插件,加強illustrator使用人員工作效率,進行文本對象分行。首先從下載網址下載這款插件 https://download.csdn.net/download/m0_67316550/87890501&…

通過安全的云開發環境重新發現 DevOps 的心跳

云開發平臺如何“提升” DevOps 首先,我來簡單介紹一下什么是云開發環境:它通常運行帶有應用程序的 Linux 操作系統,提供預配置的環境,允許進行編碼、編譯和其他類似于本地環境的操作。從實現的角度來看,這樣的環境類…

前端 JS 經典:讀取文件原始內容

前言:有些時候在工程化開發中,我們需要讀取文件里面的原始內容,比如,你有一個文件,后綴名為 .myfile,你需要拿到這個文件里的內容,該怎么處理呢。 在 vue2 中,因為 vue2 使用 vue-c…

【算法】前綴和——尋找數組的中心下標

本節博客是用前綴和算法圖解“尋找數組的中心下標”,有需要借鑒即可。 目錄 1.題目2.題意3.前綴和求解4.示例代碼5.細節6.總結 1.題目 題目鏈接:LINK 2.題意 我們以示例1為例來圖解一下題意: 3.前綴和求解 根據已有經驗,我…

Java 讀取 xml 文件的五種方式

在編寫與 XML 數據交互的現代軟件應用時,有效地讀取和解析 XML 文件是至關重要的。XML(可擴展標記語言)因其靈活性和自我描述性,已成為數據存儲和傳輸的一種普遍格式。對于 Java 開發者來說,Java 提供了多種工具和庫來…

數據庫索引相關的知識點總結

目錄 1. 索引的概念 2. 索引的作用 3. 索引的類型 4. 索引的缺點 5. 索引的使用場景 6. 索引的設計原則 7. 索引的實現技術 8. 索引的優化技巧: 數據庫表的索引是一個非常重要的概念,它類似于一本書的目錄,可以幫助我們快速找到所需的…

Idea工具的使用技巧與常見問題解決方案

一、使用技巧 1、啟動微服務配置 如上圖,在編輯配置選項,將對應的啟動入口類加進去, 增加jvm啟動參數, 比如: -Denvuat 或者 -Denvuat -Dfile.encodingUTF-8 啟動配置可能不是-Denvuat,這個自己看代…

Android 11 Audio音頻系統配置文件解析

在AudioPolicyService的啟動過程中,會去創建AudioPolicyManager對象,進而去解析配置文件 //frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp AudioPolicyManager::AudioPolicyManager(AudioPolicyClientInterface *clientIn…

MySQL目錄和文件

MySQL目錄和文件 bin目錄 存儲一些mysql腳本比如mysqld、mysqld-self等等,用于執行mysql一些操作 數據目錄 show variables like datadir;--查看數據目錄位置每一個數據庫都有一個和數據庫名相同的文件夾;MySQL5.7開始每創建一個表,在Innod…

Python機器學習 Tensorflow + keras 實現CNN

一、實驗目的 1. 了解SkLearn Tensorlow使用方法 2. 了解SkLearn keras使用方法 二、實驗工具: 1. SkLearn 三、實驗內容 (貼上源碼及結果) 使用Tensorflow對半環形數據集分 #encoding:utf-8import numpy as npfrom sklearn.datasets i…

Dynadot API調整一覽

關于Dynadot Dynadot是通過ICANN認證的域名注冊商,自2002年成立以來,服務于全球108個國家和地區的客戶,為數以萬計的客戶提供簡潔,優惠,安全的域名注冊以及管理服務。 Dynadot平臺操作教程索引(包括域名郵…

AI Agent教育行業落地案例

【AI賦能教育】揭秘Duolingo背后的AI Agent,讓學習更高效、更有趣! ©作者|Blaze 來源|神州問學 引言 隨著科技的迅猛發展,人工智能技術已經逐步滲透到我們生活的各個方面。而隨著AI技術的廣泛應用,教育培訓正引領著一場新的…

149.二叉樹:二叉樹的前序遍歷(力扣)

代碼解決 這段代碼實現了二叉樹的前序遍歷,前序遍歷的順序是:訪問根節點 -> 遞歸遍歷左子樹 -> 遞歸遍歷右子樹。以下是詳細解釋,包括各個部分的注釋: // 二叉樹節點的定義 struct TreeNode {int val; // 節…

php -v在cmd中正常顯示 在vscode中卻報錯

效果展示 原因 在vscode中 終端是 PowerShell PowerShell 默認情況下它不會繼承系統的PATH環境變量 解決方案 使用CMD作為終端 打開VSCode設置(File > Preferences > Settings 或 Ctrl,)。搜索 terminal.integrated.shell.windows。更改其值…

springboot集成nacos

springboot集成nacos 1.版本2. POM依賴3. nacos服務3.1 下載nacos壓縮包3.2 啟動nacos 4. yaml配置5.Demo5.1 配置中心簡單格式獲取方式普通方式還可以再啟動類上添加注解完成5.2 獲取json格式的demo5.2 自動注冊根據yaml配置 1.版本 nacos版本:2.3.2 springboot版本&#xff…

【已解決】使用StringUtils.hasLength參數輸入空格仍然添加成功定價為負數仍然添加成功

Bug情景 今天在做功能測試時,發現使用使用StringUtils.hasLength()方法以及定價為負數時,添加圖書仍然成功 思考過程 0.1 當時在做參數檢驗時用了spring提供的StringUtils工具包,百度/大數據模型說: 0.2…

Redis:redis基礎

Redis Remote Dictionary Service即遠程字典服務 一個基于內存的key-value結構數據庫,在開發中常常作為緩存存儲不經常被改變的數據 基于內存存儲,讀寫性能高 在企業中應用廣泛 Redis介紹 用C語言開發的開源高性能鍵值對數據庫,可以達到10w的qps,可以存儲豐富的value類型…

【ubuntu20】--- 定時同步文件

在編程的藝術世界里,代碼和靈感需要尋找到最佳的交融點,才能打造出令人為之驚嘆的作品。而在這座秋知葉i博客的殿堂里,我們將共同追尋這種完美結合,為未來的世界留下屬于我們的獨特印記。 【Linux命令】--- 多核壓縮命令大全&…