ES6——Symbol

Symbol的使用

是什么?

Symbol是ES6中新增的一个基本数据类型,翻译为符号。

为什么?

在ES6之前,对象的属性名都是字符串形式,那么很容易造成属性名的冲突;

  • 如原来有一个对象,我们希望在其中添加一个新的属性和值,但是我们在不确定它原来内部有什么内容的情况下,很容易造成冲突,从而覆盖掉它内的某个属性;
  • 如仿照实现apply、call、bind实现时,我们有给其中添加一个fn属性,那么如果它内部原来已经有了fn属性了
    呢?
  • 比如开发中我们使用混入,那么混入中出现了同名的属性,必然有一个会被覆盖掉;

Symbol就是为了解决上面的问题,用来生成一个独一无二的值。

  • Symbol值是通过Symbol函数来生成的,生成后可以作为属性名;也就是在ES6中,对象的属性名可以使用字符串,也可以使用Symbol值;
  • Symbol即使多次创建值,它们也是不同的:Symbol函数执行后每次创建出来的值都是独一无二的;
  • 可以在创建Symbol值的时候传入一个描述description:这个是ES2019(ES10)新增的特性;

使用示例

image.png

image.png

使用symbol创建相同的值

使用Symbol.for方法来做到这一点;
并且我们可以通过Symbol.keyFor方法来获取对应的key;


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容