ES6新数据类型 Symbol
Symbol表示独一无二的值,常用做对象唯一的属性名(注意 S要大写)- 先来看看基本用法
let newData = Symbol('Im a new data type')
console.log(newData) // Symbol(Im a new data type)
console.log(typeof(newData)) // "symbol"
// 因为是唯一性所以值相等的两个不会想等
let newData1 = Symbol('Im a new data type')
console.log(newData === newDate1) // false
// 两个等号也是一样
console.log(newData == newDate1) // false
console.log(newData == newDate) // true
// 三个等号也会等于自己
console.log(newData === newDate1) // true
- 上面说了常用作对象的唯一属性名
- 这里也看看怎么用
let obj = {}
let sy = Symbol('name')
obj[sy] = 'obj1'
console.log(obj) // {Symbol(name): "obj1"}
// Symbol 用作对象属性名的时候 将不能 用 obj.sy 将获取不到值
console.log(obj.sy) // undefined
// 用[]可以正常获取到值
console.log(obj[sy]) // "obj1"
Symbol.for()、Symbol.keyFor()// Symbol.for() 传入一个参数 在全局搜索是否存在,不存在就新建一个Symbol(参数)并反回 let sym = Symbol('str') let sym1 = Symbol.for('str') console.log(sym1) // Symbol(str) console.log(sym1 === sym) // false let sym2 = Symbol.for('str') console.log(sym2) // Symbol(str) console.log(sym1 == sym2) // true // Symbol.keyFor() 返回一个已登记的 Symbol 类型值的key 的值 并反会这个值 let sym3 = Symbol(sym1) console.log(Symbol.keyFor(sym3)) // "str"