【ES6】ES6的重要的13种新特性之symbol

Symbol是一种互不等价的标志,即两个Symbol值都不相等。

可以利用symbol值互不等价特性来实现属性操作的互不打扰。

1.生成唯一的Symbol值

symbol所得到的是一个symbol值,同时可以为symbol值添加一个描述。

Symbol()函数可以生成一个与其他Symbol值互不等价的的Symbol值,可以接受除Symbol值以外的值作为该Symbol值的描述。

1

2.描述相同的symbol值不等价

描述对Symbol值本身不起任何改变作用。两个具有相同描述值的Symbol值不具有等价性。

2

3.symbol是值类型

Symbol是一种值类型而不是引用类型,

值类型:将Symbol值作为函数形参进行传递,将会进行复制值传递而非引用传递。

3

4.注册全局可用的Symbol

允许开发者在当前运行时中定义一些具有全局有效性的Symbol。

通过key值向当前运行时注册一个需要在其他程序中使用的Symbol。

Symbol.for([key]);

如果key被注册过会返回一个与第一次使用所创建的Symbol值等价的Symbol值。

4

还可以根据全局Symbol获取到对应的key值。

5

5.常用Symbol值

①Symbol.iterator

定义可迭代对象

②Symbol.hasInstance

扩展instanceof语句内部逻辑权限

③Symbol.match

为正则表达式提供自定义入口。

④Symbol.unscopables

⑤Symbol.toPrimitive

用于将引用类型的对象转换为值类型。

⑥Symbol.toStringTag

当某对象的toString()方法被调用时所返回的Tag内容是什么。

附代码地址:https://github.com/JoseyDon/ES6-demo