Day03 JavaScript Object(物件)

閱讀時間約 7 分鐘


今天我們會繼續用CodePen

為何需要Object(物件)

在開始介紹object之前,我們先來討論object為何需要存在。

想像我們有一筆關於網站使用者的資料,裡面包含使用者名稱、年紀,還有sayHelloToUser()這個function。

我們可以逐個定義、宣告這些資料。

raw-image

上面寫的程式完全是可運行的,但很明顯不太好管理。這些變數除了相似的名字,在程式上他們毫無關聯。假設有個誰在中間又多寫了幾行,或是不小心弄亂了順序,這些程式碼會變得更混亂、更難處理。就是電腦能夠理解沒錯,但人容易看不懂,這通常都是個大問題。

所以,為了讓程式碼更容易被人看懂,讓你的合作對象不抓狂,object(物件)出現了。object基本上是一種資料的容器,裡面可以裝非常多不同種類的資料,把分散的整理到容器裡面就容易管理多了,類似居家收納的概念。

宣告Object

Property(屬性)

object必須由{}括起來,或是換句話說,我們能透過{}來宣告JavaScript object。但要注意,雖然都有{},object跟function的樣子很不一樣。

raw-image

name, age在object裡,被稱為object的property(屬性)。而:後的則是property的value(值),並且兩個property之間以,連接。


觀察object可以看見它的架構是:

let object = {}


(順帶一提,這是function的架構:)

function 名稱() {}

以上面的例子來說,object的一個好處就是,我們能很清楚的知道這些屬性都跟user有關,不需要更多人為的判斷了。

Method

另外,object的屬性可以是任意的,可以是booleannumberstring,也可以是function

object內,由property(屬性): value(值)組成,不同的property由,分隔。

object內,由property(屬性): value(值)組成,不同的property由,分隔。


注意function的宣告跟之前的有稍微不同,省略了關鍵字function

object內的function被稱為method。本質上跟function是一樣的。


所以總結來說,object內會有兩種內容 — propertymethod


這裡的程式碼可能會開始讓人覺得混亂,好多不同的{}

raw-image

只要特別注意,最外層的{}代表這是一個object,而sayHello的{}則是function的一部分。

存取Object Property/Method

.存取

還記得我們之前做過用document.title存取Google網站的標題嗎?

raw-image

.就是用來存取object中property的關鍵。


以剛才的userobject為例:

raw-image


執行object內的method也是用這個關鍵字:

raw-image


[]存取

除了用.存取property之外,也常見用[]和property的名稱來存取。

raw-image


為什麼有這種多此一舉?

想像我們想存取的property是一個變數,我們可能會很直覺得把它放在.後面。

但這樣會變成在object裡搜尋'key'這個string,我們會失去使用變數的便利性。

這會回傳undefined,因為object裡根本沒有'key',這個property。

這會回傳undefined,因為object裡根本沒有'key',這個property。

要解決這個問題,我們就必須用[]來存取object裡的內容。

raw-image


相信大家能慢慢理解為何object是很實用的存在了。當user的資料跟有關的指令都被包含在userobject內,我們可以更容易的管理、理解之前自己或別人寫過的code。比起散亂在別的程式碼中,這些跟user有關的內容被裝進object容器整理了。

Object內的Object

例如我們想紀錄使用者三餐,我們可能也會需要object能統一管理的方便性,宣告成object。

這時候就出現了object裡面還有另一個object的情況。其實也不難理解,你想像無印良品店裡展示的收納盒裡面裝著另一個小盒子。

raw-image

如此一來可以很方便地用meals這個object管理三餐,也能很看到使用者真的是吃了不少吐司。

最後可以透過連續使用.[]一層又一層地找到資料:

這兩行指令基本上是一樣的。

這兩行指令基本上是一樣的。

動手嘗試

透過瀏覽器內建的document這個object,我們可以監聽畫面上的event(事件),像是滑鼠點擊、按下鍵盤等。

我們要存取的function(或是正確來說是method)叫做addEventListener()。它可以為畫面加上事件的監聽。在document後面加上.來存取addEventListener()

raw-image

他需要的參數有兩個,第一個是事件名稱,第二個是事件發生時要執行的function。

我們可以嘗試監聽click(滑鼠點擊)事件,並且執行簡單的alert。

raw-image

注意第二個參數,afterClicked後面沒有(),因為我們沒有要立刻呼叫這個function。只是給addEventListener()一個參考,讓他知道事件發生後要做什麼。

正如同之前在function單元提到的,我們只給它螺絲起子,它有需要的時候會用,不是在它面前開始用螺絲起子。

執行後,點擊畫面中右邊預覽處,就可以看見成功監聽了click event,跳出alert。

執行後,點擊畫面中右邊預覽處,就可以看見成功監聽了click event,跳出alert。

小結

今天我們認識了object作為內建的資料容器,以{}宣告,以.[]存取,並且也使用了瀏覽器內建的document object監聽畫面上的事件。


明天我們會討論JavaScript另一個重要的資料容器,array(陣列)


Resource

今日Codepen

連結

Credits

關於我

我是Erkin, 一個網站開發者。
有任何疑問或是想勘誤的話歡迎聯繫。

avatar-img
0會員
11內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
HCY 71的沙龍 的其他內容
從今天開始往後的的內容會有許多的「註解」,程式不會執行被註解的內容,註解只是方便開發者辨識。JS內的註解主要有兩種。單行註解是在程式碼前方加上//,可以透過快捷鍵cmd(ctrl) + / 完成。多行註解則是用/* 及 */前後包夾要註解的內容。 轉換環境 從上個單元的經驗,有些人可能會發現
歡迎來到「10日 JavaScript」,有鑑於自己先前學習JavaScript的流程過於破碎且凌亂,特別整理了這份文章,包含了基本語法、資料型態、常用函數及JavaScript實作等。希望能幫助到一些需要用到、想要了解JavaScript的人,讓大家不必再走太崎嶇的路。內容會分成10篇,一步步
從今天開始往後的的內容會有許多的「註解」,程式不會執行被註解的內容,註解只是方便開發者辨識。JS內的註解主要有兩種。單行註解是在程式碼前方加上//,可以透過快捷鍵cmd(ctrl) + / 完成。多行註解則是用/* 及 */前後包夾要註解的內容。 轉換環境 從上個單元的經驗,有些人可能會發現
歡迎來到「10日 JavaScript」,有鑑於自己先前學習JavaScript的流程過於破碎且凌亂,特別整理了這份文章,包含了基本語法、資料型態、常用函數及JavaScript實作等。希望能幫助到一些需要用到、想要了解JavaScript的人,讓大家不必再走太崎嶇的路。內容會分成10篇,一步步
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
Thumbnail
本章節旨在介紹TypeScript的基本語法,包括一般結構、程式進入點、註解以及變數的定義和賦值。這些知識將幫助讀者瞭解TypeScript的基本架構,並且可以開始使用TypeScript進行開發。
Thumbnail
本章節旨在介紹JavaScript中的物件導向編程。內容包括類別(Class)的定義和使用,建構子的作用,以及公開,私有,受保護(Protected)等不同訪問修飾符的概念。此外,還涵蓋了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型、反射等物件導向的主要觀念。
Thumbnail
在網頁開發中,時間與日期的處理是重要且基礎的部分,本文將介紹 JavaScript 中的日期的處理方法,並提供範例程式來協助你理解。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
Thumbnail
本章節旨在介紹TypeScript的基本語法,包括一般結構、程式進入點、註解以及變數的定義和賦值。這些知識將幫助讀者瞭解TypeScript的基本架構,並且可以開始使用TypeScript進行開發。
Thumbnail
本章節旨在介紹JavaScript中的物件導向編程。內容包括類別(Class)的定義和使用,建構子的作用,以及公開,私有,受保護(Protected)等不同訪問修飾符的概念。此外,還涵蓋了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型、反射等物件導向的主要觀念。
Thumbnail
在網頁開發中,時間與日期的處理是重要且基礎的部分,本文將介紹 JavaScript 中的日期的處理方法,並提供範例程式來協助你理解。