对象 object
第七种数据类型,唯一一种复杂类型 对象可以包含其他六种类型,而前六种为简单类型,不能包含其他类型
定义:
- 无序的数据集合
-
写法
属性名和属性值
每个键值代表对象的一个属性,包含键名和键值两个部分。
- 键名表示属性名,键值表示属性值。
- 键名是字符串,不是标识符,可以包含任意字符。(标识符是不能以数字开头的)
- 引号可省略,省略之后就只能写标识符
- 就算引号省略了,键名也还是字符串(重要)
所有属性名会自动变成字符串:
let obj = {
1: true, // 1 --> '1'
3.2: true, // 3.2 --> '3.2'
1e2: true, // 1e2 --> '100'
1e-2: true, // 1e-2 --> '0.01'
.234: true, // .234 --> '0.234'
0xFF: true // 0xFF --> '255'
}
Object.keys(obj)
=> ["1", "100", "255", "3.2", "0.01", "0.234"]
- 可以使用
Object.keys(obj)
来打印出obj
的所有 key
使用变量作为属性名
语法
let p1 = 'name'
let obj1 = {
p1: 'Barry' // 属性名为:'p1'('p1'这个字符串)
}
let obj2 = {
[p1]: 'Barry' // 属性名为:'name'(变量p1的值)
}
对比:
- 不加
[ ]
的属性名会自动变成字符串 - 加了
[ ]
则会当做变量求值 - 值如果不是字符串,则会自动变成字符串
- 不加
对象的隐藏属性
- 隐藏属性
let a = Symbol()
let obj = { [a]: 'Hello' }