一文了解Symbol数据类型

Symbol本质上是一种唯一标识符,可用作对象的唯一属性名,这样其他人就不会改写或者覆盖你的属性值。

  1. 怎样声明?
let id = Symbol("id");
typeof(id) //symbol
  1. Symbol的两个特点
  • 唯一性,同一个变量生成的值也不相同
let id1 = Symbol('id');
let id2 = Symbol('id');
console.log(id1 == id2) //false;

-隐藏性,for…in,Object.keys()不能访问

let id = Symbol("id");
let obj = {
    [id]:'Symbol'
};
for(let option in obj){
    console.log(obj[option]) //空
}

//获取的方法
//Object.getOWnPropertSymbols(obj);返回一个数组,成员是当前对象的所有用作属性名的Symbol值
let id = Symbol("id");
 let obj = {
  [id]:'symbol'
 };
let array = Object.getOwnPropertySymbols(obj);
 console.log(array); //[Symbol(id)]
 console.log(obj[array[0]]);  //'symbol'
  1. 如何多次使用Symbol?
let name1 = Symbol.for('name');
let name2 = Symbol.for('name');
console.log(name1===name2) //true

console.log(Symbol.keyFor(name1));  // 'name'
console.log(Symbol.keyFor(name2)); // 'name'

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值