JS中如何通过属性获取属性值
const mySymbol = Symbol()
let obj = {
name:'cwl',
1: '1',
true:'bool',
[mySymbol]: 'sym',
}
当属性名是字符串
一般通过 . 来访问
obj.name
当属性名是数字时
obj[1] //√
obj.1 //报错
当属性值是bool类型
obj[true]
obj.true
obj['true']
当属性值为Symbol类型
obj[mySymbol]
注意
Symbol 值作为对象属性名时,不能用点运算符。
const mySymbol = Symbol();
const a = {};
a.mySymbol = 'Hello!';
a[mySymbol] // undefined
a['mySymbol'] // "Hello!"
上面代码中,因为点运算符后面总是字符串,所以不会读取mySymbol作为标识名所指代的那个值,导致a的属性名实际上是一个字符串,而不是一个 Symbol 值。
同理,在对象的内部,使用 Symbol 值定义属性时,Symbol 值必须放在方括号之中。如果不放在方括号中,该属性的键名就是字符串,而不是[]所代表的那个 Symbol 值。