iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
自我挑戰組

前端補給站,每天一個知識點系列 第 23

Day22【JS】ES6 動態計算屬性名 Computed property names

  • 分享至 

  • xImage
  •  

在 ES6 以前,要取得物件只能用
物件.屬姓名物件[屬姓名] 這樣的寫法。

其中 [] 內只允許 number 或 string,
如果放入變數,則會自動轉成 string。

var attName = 'name';
var p = {
	name : '張三',
	attName : '李四'
}
console.log(p[attName]) // 張三
// 上方等同於呼叫 console.log(p["name"])

Computed property names

在 ES6 以後,則新增了「動態計算屬性名」,
允許在定義物件時讓變數作為屬性名,
實際做法是在 key 外層包覆一個 []

[] 可以使用表達式,
因此除了純變數外也可進行計算、
使用樣板字面值(Template literals)等。


應用範例一

直接使用

const myPropertyName = 'c'

const myObject = {
  a: 5,
  b: 10,
  [myPropertyName]: 15
} 

console.log(myObject.c) // prints 15

[] 內進行計算

const fieldNumber = 3

const myObject = {
  field1: 5,
  field2: 10,
  ['field' + fieldNumber]: 15
}

console.log(myObject.field3) // prints 15

使用樣板字面值

const fieldNumber = 3

const myObject = {
  field1: 5,
  field2: 10,
  [`field${fieldNumber}`]: 15
}

console.log(myObject.field3) // prints 15

應用範例二

const classMates = ["Harry", "John", "Tom", "Mary", "Jerry"];
let classMatesList = {}

classMates.forEach((name, id) => {
  classMatesList = {...classMatesList, ['Id' + ++id]: name}
})

console.log(classMatesList); // { Id1: "Harry", Id2: "John", Id3: "Tom", Id4: "Mary", Id5: "Jerry" }

參考資料


上一篇
Day21【Dev】物件類型:mutable 與 Immutable
下一篇
Day23【Web】網路通訊協定 TCP/IP
系列文
前端補給站,每天一個知識點30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言