Symbol
js第七种数据类型:null,undefined,boolean,number,string,object,symbol
const sym = Symbol('abc')//添加一个描述
symbol可以当作对象的属性名
const level = Symbol("level")
const student = {
name :'小明',
age:12,
[level]:'优秀'
}
console.log(student);
for (let i in student)
console.log(i);
//怎么获取到level的那个值呢?
console.log(student[level])
如果
const level1 = Symbol("level")
const level2 = Symbol("level")
//symbol值产生是唯一的
//level1和level2 是不一样的
//所以可以进一步写
const student = {
name: '小明',
age: 12,
[Symbol("level")]: '优秀',
[Symbol("level")]: '有钱',
}
//那现在怎么获取呢
console.log(student[Object.getOwnPropertySymbols(student)[0]])
//返回的是个数组
Symbol for···of
Symbol.iterator 是一个内置的值,Symbol是做属性名的
console.log(student[Symbol.iterator])//undefined
let arr = [1, 2, 3, 4, 5]
console.log(arr[Symbol.iterator])//就有
如果对象有Symbol.iterator那这个对象就可以被for···of遍历