zoukankan      html  css  js  c++  java
  • ES6(八)Symbol

    Symbol
    
    // 每个从Symbol()返回的symbol值都是唯一的。
    // 一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的
    let a1 = Symbol('a')
    let a2 = Symbol('a')
    // 根据给定的键 key,来从运行时的 symbol 注册表中找到对应的 symbol,
    // 如果找到了,则返回它,否则,新建一个与该键关联的 symbol,并放入全局 symbol 注册表中。
    let a3 = Symbol.for('a')
    // a4查找到了a3的key,之前定义过,所以两者相等
    let a4 = Symbol.for('a')
    // false
    console.log(a1 === a2)
    // true
    console.log(a3 === a4)
    
    
    let a = Symbol.for('name')
    let b = Symbol.for('game')
    let obj = {
      [a]: 'ronle',
      [b]: 'LOL',
      name: 'kaka'
    }
    // {name: "kaka", Symbol(name): "ronle", Symbol(game): "LOL"}
    console.log(obj)
    
    // 常规的for,Symbol的key是拿不到的
    for (let [key, value] of Object.entries(obj)) {
      // name kaka
      console.log(key, value)
    }
    // 拿到Symbol的key和value,但普通对象的key和value拿不到
    Object.getOwnPropertySymbols(obj).forEach((item) => {
      // 这样就可以循环遍历到值
      // Symbol(name) "ronle"
      // Symbol(game) "LOL"
      console.log(item, obj[item])
    })
    // 拿到对象里所有的key和value
    Reflect.ownKeys(obj).forEach((item) => {
      console.log('ownKeys', item, obj[item])
    })
  • 相关阅读:
    arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])
    运算符 ||
    ajax 本地测试,使用Chrome 浏览器
    js set
    js get 传参 汉字 乱码问题
    删除对象中的key
    html 返回页面顶部
    js 设置回车事件
    盘面,盘口
    ST股
  • 原文地址:https://www.cnblogs.com/ronle/p/11488939.html
Copyright © 2011-2022 走看看