经验分享 – ES6 随性学习之 新增数据类型 Symbol

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