符号,设置和地图怎么在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”;是两个不同的值,但在组内部,两个奶奶是相等