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 值。