【深入浅出ES6】Symbol

本文深入探讨了ES6中引入的Symbol类型,一种新的基本数据类型,用于创建唯一的符号,拓宽了对象属性的定义方式,增加了对象属性的安全性和不可枚举性。Symbol的创建和使用方法,以及如何通过Object.getOwnPropertySymbols()检索symbol类型的对象属性。

意义

Symbol是JS新引入的一个基本类型,拓宽了定义对象属性的类型(传统的对象是所有属性都是字符串,如今新增了symbol类型的属性),同时定义对象属性是不可枚举,通过Object.keys()\Object.getOwnPropertyNames()两种方法是访问不到对象的symbol类型属性的,使得对象属性及值的访问更加的安全

使用

  1. 使用全局Symbol函数创建symbol类型
let firstName = Symbol('first name') //传入的参数作为symbol变量的描述
let person = {}
person[firstName] = 'Tom'
console.log(person) // {Symbol(first name): "Tom"}
console.log(person[firstName]) // 'Tom'
console.log(firstName) // Symbol('first name') symbol变量的描述信息存储在内部属性[[Description]]中,只有显式或隐式的调用toSting()时,会被读取到,console.log()会隐式的调用toString()方法,所以才打印出来了;String(firstName) 也会隐式调用toSting()、firstName.toString()则是显式调用
console.log('first name' in person) // false  'first name'只是symbol变量的描述信息而已
复制代码

注:symbol变量最大的特点是不会被转换成字符串和数字类型,所以也就保证了symbol值的唯一性和安全性

  1. ES6新定义的Object.getOwnPropertySymbols()检索symbol类型的对象属性 Object.keys()\Object.getOwnPropertyNames()两种方法是访问不到对象的symbol类型属性

结尾

由于目前使用的场景还不多,所以这里不赘述过多,感兴趣的同学可以去网上查查更多的用法

转载于:https://juejin.im/post/5c7cd039e51d457f7b6c9ee3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值