什麼是物件 Object? 物件可以包山包海。
物件是 JavaScript 中的參考資料型別,它擁有複合的值,可以儲存不同類型的值(value),然後透過 Key 來取值。
Object 也可以看成是屬性的無序列集合,每個屬性都是一對 Key:value。物件除了可以擁有自己的屬性,還可以透過原型物件來繼承屬性。
在 JavaScript 的資料型別裡,除了string
、number
、boolean
、null
和undefined
之外,其他都是物件型別。
物件以外的型別資料的值是無法修改與不可變的,我們稱為這類的資料型別為「基本型別」,「基本型別」的比較,是以「值」來比較,如果兩個變數的值相等,就會被視為這兩個變數是相等的。
物件是「參考資料型別」,它的值是被保存在記憶體裡的物件,當一個變數是物件(參考型別)時,實際上變數中保存的並不是這個物件本身,而是記憶體的位址。
當我們複製一個物件給另一變數時,這個變數會依照這個變數的參考值(記憶體的位址)給另一個變數參考,而不是複製物件,也就是說複製物件的值,會同時指向被複製的物件記憶體位址。也因此如果更動其中一個物件變數的內容,另一個物件變數內容也會一起更動。
在讀一些中文簡體的資料時,我們會看到類似:「简单来说栈内存用来保存变量和基本类型。堆内存用来保存对象」,用繁體的解釋是:基本型別是依照記憶體所存的值當依據,參考型別則是會先以記憶體位址為參考,才將裡面的值取出,但因為會參考同一個記憶體位址,所以找到的值也ㄧ樣。
如何創建一個物件
有兩種方法:
1 | // 第一種使用建構式: |
物件取值與賦值的方法
- 以物件名.屬性名 ex.
obj.name
,使用「點」 - 使用[] ex.
obj['屬性名']
,使用[中括號]
和 Array 不同的是,Array 是以索引index
和值value
做配對,但 objet 是以鍵Key
和值Valur
配對使用。
Array
let arr = ["Tracy", 42, "Paris", "Taiwan" ];
index | 0 | 1 | 2 | 3 |
---|---|---|---|---|
value | Tracy | 42 | Paris | Taiwan |
取值的方法:arr[0]
Object
let obj= { name : "Tracy", age: 42, city: "Paris", pays: "Taiwan" }
Key | name | age | city | pays |
---|---|---|---|---|
value | Tracy | 42 | Paris | Taiwan |
取值的方法:obj.name
Array 和 Object 最大的不同是 Array 是有順序的,會隨著索引值的順序,而 Object 的值是跟著 Key,所以即使變換順序也不會受影響。
Object 取值的 ==.== obj.name
如同中文的「的」,我們在其他地方也常用的這個點。
1 | <a id="alink" href="https://google.com" target="_blank"> c'est un lien </a> |
想要抓取 DOM 的值也可利用此一方法:
1 | let attr = document.getElementById('alink'); |
如果把上述的 HTML<a>
改為物件,即是:
1 | let a = { |
修改物件裡的某一值:
1 | let obj = { |
常見的物件使用方式
1 | let obj = {}; |