zoukankan      html  css  js  c++  java
  • es6 Symbol

    1.Symbol 值通过Symbol 函数生成,凡是属性名属于Symbol 类型,就是
      独一无二的,可以保证不会与其他属性名冲突。
          // 没有参数的时候 
     let s1 = Symbol();
        let s2 = Symbol();
        s1 === s2; // false
          // 有参数的情况
        let s1 = Symbol('foo');
        let s2 = Symbol('foo');
        s1 === s2 // false
    2.作为属性名的 Symbol
      由于每个Symbol 值都是不相等的,用于对象的属性名,就能保证不会重复出现。
        let mySymbol = Symbol();
          // 第一种写法
        let a = {};
        a[mySymbol] = 'Hello';
          // 第二种写法
        let a = {
          [mySymbol]: 'Hello'
        }
          // 第三种写法、
        let a = {};
        Object.definePropert(a,mySymbol,{value: 'Hello!'})
        a[mySymbol] // "Hello!"
     
    3.属性名的遍历
        Symbol 作为属性名,该属性不会出现在for...in,for...of 循环中,也不会出现在Object.keys(),
        Object.getOwnPropertyNames(),JSON.stringify() 返回。
        只有Object.getOwnPropertySymbols 方法可以获取指定对象的所有Symbol 属性名。
          const obj = {};
          let a = Symbol('a');
          let b = Symbol('b');
     
          obj[a] = 'Hello';
          obj[b] = 'World';
          const objectSymbols = Object.getOwnPropertySymbols(obj)
          console.log(objectSymbols) // [Symbol(a),Symbol(b)]
    4.Es6 提供内置 Symbol.
        Symbol.hasInstance Symbol.isConcatSpreadable Symbol.species
        Symbol.match Symbol.replace Symbol..split Symbol..iterator
        Symbol.toPrimitive Symbol.toStringTag
     
    我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan

  • 相关阅读:
    模拟赛20181101 雅礼 Wearry 施工 蔬菜 联盟
    模拟赛20181031 雅礼 Wearry 养花 折射 画作
    set/priority_queue的运算符重载
    set的完整用法
    最长公共上升子序列 O(n^2)
    无向图边双联通分量 tarjan 模板
    ID 迭代加深搜索 模板 埃及分数
    树上背包DP Luogu P2014 选课
    A* 第k短路
    [POJ3468]关于整数的简单题 (你想要的)树状数组区间修改区间查询
  • 原文地址:https://www.cnblogs.com/nmxs/p/8066097.html
Copyright © 2011-2022 走看看