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()
“`javascript
// 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”
“`来都来了点个赞呗~~~
正文完