Symbol

需计算字面量属性时使用

const benz = Symbol('benz');
const car = {
[benz]: 'benz car'
}; const info = Symbol('my car info'); // 此时定义info为可枚举属性
Object.defineProperty(car, info, {
value: 'benz car description',
enumerable: true
}); // 定义price为不可枚举属性
Object.defineProperty(car, 'price', {
value: 1000000
});

注意上例中info与price均不可枚举,无法使用 for-in 遍历, 使用 Object.keys 也无法得到属性名。符号类型的属性均不可被枚举。

共享符号

Symbol.for 会搜索全局符号注册表,查找以传入的参数为键值,找到即返回该符号值,找不到再创建一个符号值并返回该值。

Symbol.keyFor 可以根据符号值在全局符号注册表中返回检索出的键值。

符号值的转换

符号值无法转换为字符串和数字,所以将符号值做为对象属性所带来的效果是其他类型无法替代的。将符号值与字符串进行拼接时会发生错误。

检索对象属性

我们将对象的属性分为符号值属性和普通属性,使用 Object.keys 或者 Object.getOwnPropertyNames 可以拿到对象的普通属性,前者拿到的是可枚举的普通属性,后者是所有普通属性,这样是为了兼容ES5,ES6里新增了 Object.getOwnPropertySymbols 用来检索符号值属性,不管符号值属性可不可枚举都能拿到。

ES6新数据类型Symbol的更多相关文章

  1. es6学习笔记--新数据类型Symbol

    学习了es6语法的symbol类型,整理笔记,闲时复习. Symbol 是es6新增的第七种原始数据类型(null,string,number,undefined,boolean,object),是为 ...

  2. ES6中的新数据类型——Symbol

    今天小编和大家来聊一聊es6中新增的一个原始数据类型Symbol.在es5中原始数据类型(基本数据类型)有以下六种:Undefind.Null.Bool. String.Number.Object.今 ...

  3. ES6新增数据类型Symbol

    Symbol的含义? ES6(2015) 引入了第七种原始数据类型Symbol,Symbol英文文意思为 符号.象征.标记.记号,在 js 中更确切的翻译应该为独一无二的 Symbol的使用? Sym ...

  4. es6总结(六)--新数据类型-Symbol

  5. es6 新增数据类型Symbol

    es6在string number boolean null undefined object之外又新增了一种Symbol类型. Symbol意思是符号,有一个特性—每次创建一个Symbol值都是不一 ...

  6. ES6新数据类型map与set

    一.map,简单的键值对映射,具有很快的查找速度 1. 初始化map,map的键名可以使用其他数据类型,对象的属性名只能使用字符串或symbol 使用二维数组 var m = new Map([['n ...

  7. 16. js 判断变量类型,包括ES6 新类型Symbol

    相信大家在开发中遇到需要判断变量类型的问题,js变量按存储类型可分为值类型和引用类型,值类型包括Undefined.String.Number.Boolean,引用类型包括object.Array.F ...

  8. 理解ES6的新数据类型:Symbol

    ES6之前的数组类型 在ES6之前JS只有6种数据类型,分别是:Undefined.Null.布尔值(Boolean).字符串(String).数值(Number).对象(Object). ES6引入 ...

  9. ES6 新特性之Symbol

    Symbol let s1 = Symbol('foo'); let s2 = Symbol('bar'); s1 // Symbol(foo) s2 // Symbol(bar) s1.toStri ...

随机推荐

  1. Mybatis SQL 使用JAVA 静态资源

    常量:${@com.htsc.backtest.component.Global@PAGE_SIZE} 静态方法:${@com.htsc.backtest.component.Global@doMet ...

  2. luogu P3601 签到题

    链接P3601 签到题 求\[\sum_{i=l}^{r} i-\phi_i\] \(l,r\leq 10^{12},\ r-l\leq 10^6\) 杜教筛似乎做不了. 然后再看\(l\),\(r\ ...

  3. bzoj3011 [Usaco2012 Dec]Running Away From the Barn 左偏树

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=3011 题解 复习一下左偏树板子. 看完题目就知道是左偏树了. 结果这个板子还调了好久. 大概已 ...

  4. DevExpress v19.1新版亮点——WinForms篇(一)

    行业领先的.NET界面控件DevExpress v19.1终于正式发布,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WinForms v19.1中新增的一些控 ...

  5. js原生高逼格插件

    如何定义一个高逼格的原生JS插件 作为一个前端er,如果不会写一个小插件,都不好意思说自己是混前端界的.写还不能依赖jquery之类的工具库,否则装得不够高端.那么,如何才能装起来让自己看起来逼格更高 ...

  6. 《转》tensorflow学习笔记

    from http://m.blog.csdn.net/shengshengwang/article/details/75235860 1. RNN结构 解析: (1)one to one表示单输入单 ...

  7. 3D世界变换

    一直弄不清3D场景中scaleOrientation的作用,还有scale.orientation(roation).translation的顺序问题,以往都是试图查一下,关于前者网上几乎找不到什么清 ...

  8. Java异常处理的基础知识

    Java中的异常捕获语句 Try{ //可能发生运行错误的代码: } catch(异常类型 异常对象引用){ //用于处理异常的代码 } finally{ //用于“善后” 的代码 } Java 中所 ...

  9. shell scripts 编写基础

    一.shell变量的相关用法: 变量作为被赋值的一方的时候不加$,只有在使用其值的内容的时候需要加上$,该符号可 1,变量中的单引号‘’.双引号“”“.反单引号‵`.括号().大括号{}.双括号(() ...

  10. php versionscan YAF

    https://github.com/psecio/versionscan   Yaf 的特点: 用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销. 所有的框架类, 不需要编 ...