Symbol
js seventh data type: null, undefined, boolean, number, string, object, symbol
const sym = Symbol('abc')//添加一个描述
symbol can be used as the property name of the object
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])
if
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 is a built-in value, and Symbol is used as a property name
console.log(student[Symbol.iterator])//undefined
let arr = [1, 2, 3, 4, 5]
console.log(arr[Symbol.iterator])//就有
如果对象有Symbol.iterator那这个对象就可以被for···of遍历