博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6 symbol
阅读量:4510 次
发布时间:2019-06-08

本文共 950 字,大约阅读时间需要 3 分钟。

symbol是es6新增的基本类型 跟string一级,它的功能类似于一种标识唯一性的ID;

symbol可以被typeof识别 类型就为symbol;

例子:

let s2 = Symbol('another symbol')

关注点:同样的字符串或者数字用symbol处理后 ==和===两边是不相等的

let s1 = Symbol()let s2 = Symbol('another symbol')let s3 = Symbol('another symbol')s1 === s2 // falses2 === s3 // false

应用场景:属性,方法私有化:当你不想暴露给外界一些key值的时候 只用于内部的时候  可以使用此方式

let obj = {   [Symbol('name')]: '一斤代码',   age: 18,   title: 'Engineer'}Object.keys(obj)   // ['age', 'title']for (let p in obj) {   console.log(p)   // 分别会输出:'age' 和 'title'}Object.getOwnPropertyNames(obj)   // ['age', 'title']

应用场景:当使用JSON.stringify()将对象转换成JSON字符串的时候,Symbol属性也会被排除在输出内容之外:

JSON.stringify(obj)  // {"age":18,"title":"Engineer"}

如何提取symbol

// 创建一个 symbol 并放入 Symbol 注册表,key 为 "foo"var globalSym = Symbol.for("foo"); Symbol.keyFor(globalSym); // "foo"// 创建一个 symbol,但不放入 symbol 注册表中var localSym = Symbol(); Symbol.keyFor(localSym); // undefined,所以是找不到 key 的

转载于:https://www.cnblogs.com/web-chuan/p/11592158.html

你可能感兴趣的文章
ERP 高级查询(Advanced Query)设计与实现 SQL语句解析成LLBL Gen ORM代码
查看>>
gfs下载文件较大,可以分区域分变量下载
查看>>
用 Mahout 和 Elasticsearch 实现推荐系统
查看>>
预装windows7 C盘只能分出一半空间的解决办法
查看>>
MySql绿色库(无需安装) 可以由打包工具直接打包
查看>>
理解HTTP幂等性,分布式事物
查看>>
luogu4219 and bzoj4530 大融合
查看>>
python安装setup.py问题
查看>>
【算法03】n个骰子的总和
查看>>
(剑指Offer)面试题3:二维数组中的查找
查看>>
layer的简单使用
查看>>
命名空间
查看>>
JS禁止右键,禁止Ctrl键,禁止选中文字
查看>>
XtraGrid判断列有没有显示
查看>>
MySQL系列--3.数据类型和连接查询
查看>>
servlet的url-pattern匹配规则详细描述
查看>>
jquery 进度条
查看>>
《BI那点儿事》数据流转换——查找转换
查看>>
二叉树中和为某一值的路径
查看>>
07_组件三大属性(1)_state
查看>>