在 ES6 以前,要取得物件只能用
物件.属姓名
或 物件[属姓名]
这样的写法。
其中 []
内只允许 number 或 string,
如果放入变数,则会自动转成 string。
var attName = 'name';
var p = {
name : '张三',
attName : '李四'
}
console.log(p[attName]) // 张三
// 上方等同於呼叫 console.log(p["name"])
在 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" }
<<: Day23 AR隐形眼镜 实现前的最後几哩路 是坎坷的天堂路还是一路顺风的云霄飞车呢?
>>: PowerShell--除了CMD你还可以用他追求你想要的Windows
上一回讲到两种搜寻演算法,一种是一个一个找,一种则是每次寻找都可以去掉一半的选项,好像有一种是明显比...
...
前言: (维基)神经风格迁移( NST ) 是指一类软件算法,它们操纵数字图像或视频,以采用另一幅图...
-防火墙接口和区域 防火墙通常以两种方式调解网络流量:基於上下文和基於区域。传统的基於上下文的方法...
我们先看看以下这些知名的团队运动的状况: 在棒球的规则中,各国一军日常可以登录25-29名球员,约在...