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 值能够 ...
随机推荐
- 其实SQL优化调优,就跟吃饭喝水一样简单,教你抓住SQL的本质!
前言 SOL 优化并不简单,做好 SOL 优化需要掌握数据库体系结构.表和索引设计.高效 SOL法.高级 SOL 语法.多种优化工具等知识,甚至还得分析业务特点,以及了解优化器的缺点.只有建立 SOL ...
- 史上最全!2020面试阿里,字节跳动90%被问到的JVM面试题(附答案)
前言:最近老是收到小伙伴的私信问我能不能帮忙整理出一份JVM相关的面试题出来,说自己在大厂去面试的时候这一块问的是特别多的,每次自己学的时候每次都学不到重点去.这不他来了,一份详细的JVM面试真题给大 ...
- python中操作数据库
python中要操作数据库,要使用该数据库在python中对应的驱动库,本文介绍python操作mysql数据库 1.首先安装pymysql 2.导入库 3.建立连接 4.建立游标 5.发起请求 6. ...
- LNMP 一键安装脚本
这个脚本是使用shell编写,为了快速在生产环境上部署lnmp/lamp/lnmpa(Linux.Nginx/Tengine/OpenResty.MySQL/MariaDB/Percona.PHP), ...
- 自学linux——1.VMware的安装及VM下centos的安装
1.CentOS下载 网址:https://www.centos.org/download/ 网盘:https://pan.baidu.com/s/1HrtK6xNig6KC8oh6O-6fyg 提取 ...
- redis面试问题(一)
五大常用数据类型 redis与其他缓存的比较 rdb和aof 主从复制,读写分离,哨兵机制 -------------------------------- 1.为什么使用redis (一)性能 我们 ...
- Alpha冲刺-第八次冲刺笔记
Alpha冲刺-冲刺笔记 这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 这个作业要求在哪里 https://edu.cnblogs. ...
- YoyoGo微服务框架入门系列-快速编写WEB API
前言 YoyoGo是一个使用Golang编写的一个简单.轻量.快速.基于依赖注入的微服务框架,目前依然在研发阶段,欢迎Star以及一起参与到框架的研发 GitHub地址:https://github. ...
- python实现自动发邮件
Python有两个内置库:smtplib和email,可以实现邮件功能,无需下载,直接import导入. smtplib库负责发送邮件 Email库负责构造邮件格式和内容 邮件发送需要遵守SMTP协议 ...
- TextClip构造方法报OSError:MoviePy creation of None failed because of the following [WinError 2]系统找不到指定的文件
☞ ░ 前往老猿Python博文目录 ░ 在使用moviepy的构造方法创建实例时报错: "C:\Program Files\Python37\python.exe" F:/stu ...