ES6的Symbol类型介绍

Symbol特性

  1. Symbol类型不可被Object.keys或for...in枚举
const key = Symbol('value')
const obj = {}
obj[key] = 1

console.log(Object.keys(obj)) // []
for(let i in obj) {console.log(i)} // undefined
  1. Symbol类型是唯一值,即使传入相同的key也不相等
Symbol('name') === Symbol('name') // false
  1. Symbol可以使用以下api进行获取值
const obj = {
  Symbol('name'): ''
}
// 使用Object的API
Object.getOwnPropertySymbols(obj) // [Symbol(name)]

// 使用新增的反射API
Reflect.ownKeys(obj) // [Symbol(name), 'age', 'title']
  1. 获取全局Symbol,可以在多个浏览器窗口使用,如iframe
Symbol.for('global') === Symbol.for('global') // true

使用场景

  1. Object的key值
  2. 定义常量
  3. 控制输出变量,假设不想输出某个值,就可以使用Symbol创建key值
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.概述 ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象...
    赵然228阅读 912评论 2 10
  • 概述 ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加...
    oWSQo阅读 607评论 1 3
  • ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型,前...
    语目阅读 4,058评论 0 3
  • 1.概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对...
    DC_er阅读 377评论 0 0
  • 群名称“CNS”是国内对 Cell、Nature、Science 三大顶尖期刊的简称,代指各专业学术领域的最高交流...
    无言的白茶阅读 820评论 0 0

友情链接更多精彩内容