Code前端首页关于Code前端联系我们

ES6 Symbol 概念和功能

terry 2年前 (2023-09-09) 阅读数 141 #Javascript

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前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门