象征,设置和地图怎么在ES6中使用

  

符号,设置和地图怎么在ES6中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强>符号

1。象征是ES6引入了一种新的原始数据类型,表示独一无二的值。它是JavaScript语言的第七种数据类型,前六种分别是:定义,null,布尔值(布尔),字符串(字符串),数值(数量),对象(对象),

2。符号值通过符号函数生成,可以作为对象的属性名使用,保证不会与其他属性名产生冲突;

let  s =,符号();   typeof  s //,符号

ps:上面代码表示创建一个符号变量,值得注意的是,符号函数前不能使用新命令,否则会报错,也就是说象征是一个原始类型的值,不是对象,也不能添加属性;

3。符号函数可以接受一个字符串作为参数,表示对象征实例的描述,主要用于区分不同的符号变量;

let  s1 =,符号(& # 39;一个# 39;);   let  s2 =,符号(& # 39;b # 39;);   s1.toString(),//, & # 39;符号(a) & # 39;   s2.toString (),//, & # 39; (b)象征& # 39;

ps:符号函数的参数只是表示对当前符号值的描述,因此相同参数的符号函数的返回值是不相等的

let  s1 =,符号(& # 39;一个# 39;);   let  s2 =,符号(& # 39;一个# 39;);   s1 ===, s2 //假

4。符号值不能与其他类型的值进行运算,但可以转为布尔值,但是不能转为数值;

let  s =,符号();   时间+ s  & # 39; 2 & # 39;,,,,//, Cannot  convert  a  Symbol  value 用a 字符串   布尔(s),,//,真的   ! s ,,,,,,//,假

5。用于对象的属性名,可以保证不会出现同名的属性,对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心改写或覆盖;值得注意的是,符号值作为对象属性名时,不能用点运算符,因为点运算符后面是一个字符串;

let  s =,符号();   let  obj =, {};   obj [s],=, & # 39; hello  & # 39;;//或者   let  obj =, {   [s],才能:,& # 39;hello  & # 39;   }   obj.s //,未定义   obj [s],//, hello 世界

6。符号作为属性名,不会被常规方法遍历得到,即该属性不会出现在的…,…的循环中,也不会被种(),Object.getOwnPropertyNames (), JSON.stringify()返回,但是,它并不是私有属性,可以使用对象。getOwnPropertySymbols方法,可以获取指定对象的所有象征属性名,

var  obj =, {};   var  a =,符号(& # 39;一个# 39;);   var  b =,符号(& # 39;b # 39;);   obj [a],=, & # 39;你好# 39;;   obj [b],=, & # 39; & # 39;;   时间=obj.c  & # 39;我# 39;;   (,let  key  obj 拷贝){   console.log才能(关键),,,,,//c   }   var  objectSymbols =, Object.getOwnPropertySymbols (obj);   console.log (objectSymbols),//, [(a),象征,象征(b))

7. Symbol.for方法接受一个字符串作为参数,然后搜索有没有以该参数作为名称值的象征。如果有,就返回这个符号值,否则就新建并返回一个以该字符串为名称的符号值,它与符号()不同的是,Symbol.for()不会每次调用就返回一个新类的象征型的值,而是会先检查给定的关键是否已经存在,如果不存在才会新建一个值,而符号()每次都会返回3不同的符号值;

Symbol.for (“name"),===, Symbol.for (“name")//,真的   符号(“name"),===,符号(“name")//,假

8.的象征。keyFor方法返回一个已登记的符号类型值的关键,而符号()写法是没有登记机制的;

var  s1 =, Symbol.for (“name");   Symbol.keyFor (s1),//,“name"   var  s2 =,符号(“name");   Symbol.keyFor (s2),//,未定义的

ps:象征。为为符号值登记的名字,是全局环境的,可以在不同的iframe或服务工作者中取到同一个值

<强>设置和地图

1。ES6提供了新的数据结构集。它类似于数组,但是成员的值都是唯一的,没有重复的值,它本身是一个构造函数,用来生成组数据结构。

let  s =, new 设置((1、2、3、4、5、2、2、3、5]);//s  [1、2、3、4、5)

2。可以使用添加(关键)方法可以添加元素到设置中,可以重复添加,但不会有效果,值得注意的是向集加入值的时候,不会发生类型转换,即5和“5”;是两个不同的值,但在组内部,两个奶奶是相等

象征,设置和地图怎么在ES6中使用