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"
此时浏览器会报错 T
ypeError: 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 值能够 ...
随机推荐
- 面试官:别的我不管,这个JVM虚拟机内存模型你必须知道
前言 说jvm的内存模型前先了解一下物理计算机的内存处理. 物理计算器上用户磁盘和cpu的交互,由于cpu读写速度速度远远大于磁盘的读写速度速度,所以有了内存(高速缓存区).但是随着cpu的发展,内存 ...
- MindManager 2021 版新增了哪些功能
MindManager Windows 21是一款强大的可视化工具和思维导图软件,在工作应用中有出色的表现.今天就带大家来看下这个新版本增加了哪些功能? 1.新增现代主题信息样式MindManager ...
- 使用Camtasia制作冰雪奇缘视频
冰雪奇缘的精良制作,以及场景的华丽,让很多女孩子都很喜欢.对于其中美丽的冰雪场景,我们还可以使用Camtasia(Windows系统)教程录制软件来做冰雪奇缘视频. Camtasia教程录制软件是一款 ...
- 系统兼容软件CrossOver和虚拟机软件,哪个好用?
想要在Mac上运行Windows软件的方法有很多种,比较常见的有安装双系统以及虚拟机.但是安装双系统会导致一个很大的问题,就是占用了过多的硬盘空间,这样一来会导致可使用的空间减少. 目前来说,大家都不 ...
- C语言讲义——数组
数组是: 一组数据 一组类型相同的数据 在计算机底层,数组是一块连续的内存 为什么使用数组? 一年12个月 int m1=1, m2=2, m3=3, ... 麻烦 数组示例: #include &l ...
- 蓝桥杯——压缩变换(2016JavaB组第9题)
压缩变换(16JavaB9) 小明最近在研究压缩算法. 他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比. 然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这 ...
- LaTex源文件的基本结构
默认编译器设置: Utf-8设置: 相关代码与注释: 显示效果:
- 11_SurfaceView绘图
学习SurfaceView绘图API的使用方法,为接下来使用SurfaceView开发游戏做准备. 1 package com.example.surfaceview; 2 3 import andr ...
- Golang 实现 Redis(8): TCC分布式事务
本文是使用 golang 实现 redis 系列的第八篇, 将介绍如何在分布式缓存中使用 Try-Commit-Catch 方式来解决分布式一致性问题. godis 集群的源码在Github:Godi ...
- 基础篇:异步编程不会?我教你啊!CompeletableFuture
前言 以前需要异步执行一个任务时,一般是用Thread或者线程池Executor去创建.如果需要返回值,则是调用Executor.submit获取Future.但是多个线程存在依赖组合,我们又能怎么办 ...