前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >es6 Symbol

es6 Symbol

作者头像
用户1197315
发布2018-01-19 15:20:16
6400
发布2018-01-19 15:20:16
举报
文章被收录于专栏:柠檬先生柠檬先生

1.Symbol 值通过Symbol 函数生成,凡是属性名属于Symbol 类型,就是

  独一无二的,可以保证不会与其他属性名冲突。

代码语言:js
复制
      // 没有参数的时候
    let s1 = Symbol();
    let s2 = Symbol();
    s1 === s2; // false
      // 有参数的情况
    let s1 = Symbol('foo');
    let s2 = Symbol('foo');
    s1 === s2 // false

2.作为属性名的 Symbol

  由于每个Symbol 值都是不相等的,用于对象的属性名,就能保证不会重复出现。

代码语言:js
复制
    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 属性名。

代码语言:js
复制
      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.

代码语言:js
复制
    Symbol.hasInstance Symbol.isConcatSpreadable Symbol.species
    Symbol.match Symbol.replace Symbol..split Symbol..iterator
    Symbol.toPrimitive Symbol.toStringTag
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-12-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档