# 何謂物件取值?在什麼時機上會用到?點(.)和方括號([])取值的不同之處
物件是 JavaScript 中的基礎,可以把它想像成一個容器,裡面用我們要的"屬性"(key)當格子放置需要的資訊(value)做分類,每個格子用逗號分開。
```javascript=
let Me = {
// key:"value",
name:"洋蔥",
sex:"male",
age:27,
skill:[HTML,CSS,JS,jQuery]
}
```
> Me容器中裝著 name , sex , age , skill的格子,裡面分別放入需要的資料
## 物件取值
物件取值的方式有兩種,
* 點語法( . )
* 中括號( [] ):
### 點語法 ( . ) 存取值
* 只能在 key 不包含符號的狀況下使用,因為 JavaScript 並不會知道後面的符號是 key 的一部分
* 在開頭為數字的狀況下也無法使用
* 無法使用變量
```javascript=
// 取
let point = {
key:"正常",
"key-1":"有特殊符號",
"1":"數字在開頭"
}
let text = "key"
console.log(point.key) //正常
console.log(point."key-1") //NaN
console.log(point."1") //報錯
console.log(point.text) //undefined
// 存
point.english = "abc"; //新增新的項目
```
### 中括號[] 存取值
* 可接受 key 中有符號
* 可以接受變數,會將變數中的值自動轉換成 string 再去讀取
```javascript=
// 取
let brackets = {
key:"正常",
"key-1":"有特殊符號",
"1":"數字在開頭"
}
let text = "key"
console.log(brackets["key"]) //正常
console.log(brackets["key-1"]) //有特殊符號
console.log(brackets[1]) //數字在開頭
console.log(pointbrackets[text]) //正常
// 存
brackets["Chinese"] = "中文"
```
## 參考資料
[JavaScript 的陣列 (Array) 與物件 (Object)](https://w3c.hexschool.com/blog/f8bbfdeb)
[JavaScript 核心篇 學習筆記: Chap.30 — 物件取值,新增與刪除](https://medium.com/@yining1204/javascript-%E6%A0%B8%E5%BF%83%E7%AF%87-%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98-chap-30-%E7%89%A9%E4%BB%B6%E5%8F%96%E5%80%BC-%E6%96%B0%E5%A2%9E%E8%88%87%E5%88%AA%E9%99%A4-b7a3a37a6bd7)
{"metaMigratedAt":"2023-06-16T13:11:24.510Z","metaMigratedFrom":"Content","title":"何謂物件取值?在什麼時機上會用到?點(.)和方括號([])取值的不同之處","breaks":true,"contributors":"[{\"id\":\"663fae2d-2bb5-4437-90b7-96f11a50e120\",\"add\":1526,\"del\":54}]"}