ES6 Symbol 概念和功能
Symbol 是 ES6 中的一种新数据类型,在 ES5 中不可用。本文重点介绍符号的概念和作用,分析符号的作用和特点,以及如何使用和相关注意事项。事情。
概念
符号是一种提供唯一值的数据类型。
功能
//在ES5中我们可以多次声明一个值 变量 a = 5; var b = 5; 一个===b; //正确的 // ES6中声明的值永远不会相等并且保证唯一性 让 a = 符号(); 让 b = 符号(); a===b; //假
如果我们使用它,我们如何取回这个值?
我们可以使用另一种声明方式:
let a = Symbol.for('abc'); 让 b = symbol.for('abc'); a===b; //真
Symbol.for 不仅声明一个唯一的值,还检查更改的值是否已在全局注册。如果已注册,则返回该值。
使用场景
令 obj = { [符号.for('abc')]:'111', abc: '1234' }
如果不使用符号,则键值会重复。还有一种情况就是别人继承了你的对象,这也会带来一些问题。
所以本例中符号的使用是完美的,不会产生任何冲突。
如何获取对象中符号的值
注意:for ..in ..无法获取符号声明的值。
/** * 时间:2019/08/28 *前端教程:https://codeqd.com/wp-content/uploads/2023/09/ */ 让 a = 符号('a'); 让 obj = { [一]:'111', b:'222', c:333 } for(let [key, value] from Object.entries(obj)){ console.log('for from', key, value); } //输出: //对于b 222 //来自c 333
那么我们如何获取符号的值呢?
方法1:Object.getOwnPropertySymbols
/** * 时间:2019/08/28 *前端教程:https://codeqd.com/wp-content/uploads/2023/09/ */ 让 a = 符号('a'); 让 obj = { [一]:'111', b:'222', c:333 } Object.getOwnPropertySymbols(obj).forEach(item=>{ console.log(obj[项目]) }) // 输出: //111
object.getOwnPropertySymbols 方法只会以数组形式返回符号,而无法返回所有键。那么有没有办法返回所有的密钥呢?
方法2:Reflect.ownKeys
Reflect.ownKeys 方法可以返回所有键值。
/** * 时间:2019/08/28 *前端教程:https://codeqd.com/wp-content/uploads/2023/09/ */ 让 a = 符号('a'); 让 obj = { [一]:'111', b:'222', c:333 } Reflect.ownKeys(obj).forEach(item=>{ console.log(obj[项目]); }) // 输出: //222 //333 //111
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
上一篇:上传前图片预览【js实现】 下一篇:js中==和===有什么区别
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。