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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • css3 UI 修饰——回顾

    1.box-shadow 属性向框添加一个或者多个阴影。   语法: box-shadow: h-shadow v-shadow blur spread col...

    用户1197315
  • Less 常用基础知识

    LESS 中的注释   也可以额使用css 中的注释(/**/) 这种方式是可以被编译出来的。   也可以使用// 注释 不会被编译的 变量 ...

    用户1197315
  • mybatis——学习笔记

    配置文件    <properties resource="dbconfig.properties"></properties>     1. properti...

    用户1197315
  • 前端测试题: 关于Symbol,错误的说法是?

    Symbol是由ES6规范引入的一项新特性,它的功能类似于一种标识唯一性的ID。通常情况下,我们可以通过调用Symbol()函数来创建一个Symbol实例.

    舒克
  • Ecmascript语法之Symbol

    Symbol 概述 作为属性名的Symbol 实例:消除魔术字符串 属性名的遍历 Symbol.for(),Symbol.keyFor() 实例:模块的 Sin...

    xiangzhihong
  • ES6之symbol

    为什么需要使用Symbol 考虑到以下场景: // a library var L = (function() { var prop1 = 'prop1...

    糊糊糊糊糊了
  • 理解和使用ES6中的Symbol

    ES6中引入了一种新的基础数据类型:Symbol,不过很多开发者可能都不怎么了解它,或者觉得在实际的开发工作中并没有什么场景应用到它,那么今天我们来讲讲这个数据...

    一斤代码
  • 重温 ES6 Symbol

    1.Symbol 通过工厂函数创建,不能以 new 的方式创建,所以使用 instanceof 运算符返回的结果为 false

    阿宝哥
  • Javascript Symbol 解惑 什么是Symbol创建Symbol如何使用Symbol

    Symbol是ES6中新引入的一种基本数据类型,在此之前Javascript中已有几种基本数据类型:

    MudOnTire
  • ES6中的Symbol有什么卵用

    在ES6中新增了一中类型,这个类型叫做Symbol,最大的特点号称独一无二,下面我们来说一下这东西怎么用,最后再说一下他用在哪。

    无邪Z

扫码关注云+社区

领取腾讯云代金券