es6 Symbol

2018-06-24 01:05:57来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Vue creatElement

下一篇:景点地图开发实战