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

  • 相关阅读:
    self 和 super 关键字
    NSString类
    函数和对象方法的区别
    求两个数是否互质及最大公约数
    TJU Problem 1644 Reverse Text
    TJU Problem 2520 Quicksum
    TJU Problem 2101 Bullseye
    TJU Problem 2548 Celebrity jeopardy
    poj 2586 Y2K Accounting Bug
    poj 2109 Power of Cryptography
  • 原文地址:https://www.cnblogs.com/nmxs/p/8066097.html
Copyright © 2011-2022 走看看