ES6新增数据类型Symbol
Symbol的含义?
ES6(2015) 引入了第七种原始数据类型Symbol,Symbol英文文意思为 符号、象征、标记、记号,在 js 中更确切的翻译应该为独一无二的
Symbol的使用?
Symbol 值通过Symbol函数生成,这里需要注意Symbol函数前不能使用new命令,切记,切记,切记
let sym = Symbol()
1、接受一个字符串类型的参数
let a = Symbol("name")
a // Symbol(name)
a.toString() // "Symbol(name)"
2、有无参数做对比
①有参数
let a1 = Symbol("name")
let a2 = Symbol("name")
a1 === a2 //false
可以看出a1,a2是Symbol的返回值并且参数相同但它们是不相等的。
②无参数
let a1 = Symbol()
let a2 = Symbol()
a1 === a2 //false
可以看出a1,a2是Symbol的返回值,但它们是不相等的。
3、不能与其他的数据类型进行运算
let s = Symbol("Hi Symbol")
s + "welcome your visit"
此时浏览器会报错 TypeError: can't convert symbol to string 意思是将Symbol 值不能与其他类型的值进行运算
4.显式转为字符串
let s = Symbol("Hello word")
第一种 String(s) //'Symbol("Hello word")'
第二种 s.toString() //'Symbol("Hello word")'
5.转布尔类型
let s = Symbol()
Boolean(s) // true
!s //false
6.Symbol.prototype.description
此语法是为刚创建好的Symbol语法添加一个描述。
const s = Symbol("Hello Word")
读取描述:s.description // "Hello Word"
7.可以当属性名来使用(它的独一无二性质,可以防止键名被改写或覆盖)
let s = Symbol()
//第一种方式
let obj = {}
obj[s] = 'Hello Word';
//第二种方式
let obj = {
[s]:'Hello Word'
}
//第三种方式
let obj = {}
Object.defineProperty(obj,s,{value:"Hello Word"})
obj[s] // "Hello Word"
8.Symbol.for() Symbol.keyFor()
let a1 = Symbol.for("name")
let a2 = Symbol.for("name")
a1 === a2 //true
两个相等的原因是Symbol.for()不会每次调用就返回一个新的 Symbol 类型的值,是会先检查给定的key是否已经存在,如果不存在才会新建一个值。
Symbol.keyFor()方法返回一个已登记的 Symbol 类型值的key。
let a1 = Symbol.for("name");
Symbol.keyFor(s1) // "name"
let a2 = Symbol("name");
Symbol.keyFor(s2) // undefined
ES6新增数据类型Symbol的更多相关文章
- es6 新增数据类型Symbol
es6在string number boolean null undefined object之外又新增了一种Symbol类型. Symbol意思是符号,有一个特性—每次创建一个Symbol值都是不一 ...
- 浅谈ES6新增数据类型:Symbol
面试中喜闻乐见的问题就是问我们的ES6新增了哪些个新特性 这篇文章一起学习一下新增的数据类型:Symbol JS的原始数据类型:6种Boolean,String,Undefined,NULL,Numb ...
- ES6的新增数据类型:Symbol
简介:Symbol类型是es6新增的一个数据类型,Es5的基本数据类型(undefined,null,Object,function,Number,string) Symbol值通过Symbol函数生 ...
- ES6新数据类型Symbol
Symbol 需计算字面量属性时使用 const benz = Symbol('benz'); const car = { [benz]: 'benz car' }; const info = Sym ...
- ECMAScript6新增数据类型symbol数据类型
25.Symbol目的:为了解决对象之间属性名冲突的问题,Symbol它是引用数据类型. Symbol( ),它代表着一个独一无二的值 [name]: '小红',//加中括号代表默认创建了一个Symb ...
- ES6 新增数据类型检测 Set Map Proxy
检测代码方法 function isNative(api){ return /native code/.test(api.toString())&&typeof api !== 'un ...
- ES6 新增基本数据类型Symbol
ES6 增加了一个新的基本数据类型 symbol. 不过,和其他基本数据类型相比,它有点与众不同,因为它没有字面量的表现形式,而且创建的方式也有点奇怪,只能通过调用全局函数Symbol()来完成. l ...
- es6学习笔记--新数据类型Symbol
学习了es6语法的symbol类型,整理笔记,闲时复习. Symbol 是es6新增的第七种原始数据类型(null,string,number,undefined,boolean,object),是为 ...
- ES6 之 第七种数据类型Symbol
概述 为了减少对象的属性名冲突,ES6引入新的原始数据类型Symbol,JS的第七种数据类型. Symbol 能够保证每个属性的名字都是独一无二,这样就能从根本上防止属性名冲突. Symbol 值能够 ...
随机推荐
- mac用户怎么保护自己的隐私安全?
使用过Windows系统的小伙伴们应该都知道,Windows系统下有360电脑管家和腾讯电脑管家等几款著名清理软件,专门用于清理电脑缓存.垃圾文件以及清除浏览痕迹,这对于Windows用户是大大节省了 ...
- 思维导图MindManager流程图有哪些功能
流程图是思维导图中的一种图表,应用相当广泛.MindManager 2020作为专业的思维导图软件,更加强了流程图的功能,让用户能使用更加简便的MindManager技巧绘制流程图.接下来,就让我们一 ...
- 理解与使用Treiber Stack
目录 背景 名称由来 CompletableFuture源码实现 FutureTask实现 Treiber Stack抽象实现 入栈 出栈 示例 参考 背景 最近在很多JDK源码中都看到了Treibe ...
- 自学linux——8.firewall-cmd的命令使用
firewall-cmd使用方法 1.firewall-cmd的含义 firewall-cmd 是 firewalld的字符界面管理工具,firewalld是centos7之后版本的一大特性, 最大的 ...
- 方格取数(number) 题解(dp)
题目链接 题目大意 给你n*m个方格,每个格子有对应的值 你从(1,1)出发到(n,m)每次只能往下往上往右,走过的点则不能走 求一条路线使得走过的路径的权值和最大 题目思路 如果只是简单的往下和往右 ...
- Java蓝桥杯——逻辑推理练习题
逻辑推理题 谁是贼? 公安人员审问四名窃贼嫌疑犯.已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎.在回答公安人员的问题中: 甲说:"乙没有偷,是丁偷的.&quo ...
- (在模仿中精进数据可视化05)疫情期间市值增长top25公司
本文完整代码及数据已上传至我的Github仓库https://github.com/CNFeffery/FefferyViz 1 简介 新冠疫情对很多实体经济带来冲击的同时,也给很多公司带来了新的增长 ...
- if判断 和while、for循环
if判断 语法一: if 条件: 条件成立时执行子代码块 代码1 代码2 实例一: sex='female' age=18 is_beautifui=True if sex=='female' ...
- 3D网页小实验——将txt配置文本转化为3D陈列室
设计目标:借鉴前辈编程者的经验将简单的配置文本转化为3D场景,并根据配置文件在场景中加入图片和可播放的视频,最终形成可浏览的3D陈列室. 一.使用效果 1.txt配置文件: (博客园的富文本编辑器会改 ...
- crash安装使用
cash作为Linux内核调试的工具是必不可少少的一部分,但是他的下载并不是 yum install一下这么简单的,本文就来讲一下如何安装crash进行调试. 首先就是了解Linux的内核版本.这 ...