es6的Symbol数据类型
- ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型,前六种是:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。
- Symbol值通过
Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的Symbol类型。凡是属性名属于Symbol类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。 - 注意,
Symbol函数前不能使用new命令,否则会报错。这是因为生成的Symbol是一个原始类型的值,不是对象。也就是说,由于Symbol值不是对象,所以不能添加属性。基本上,它是一种类似于字符串的数据类型。
Symbol函数可以接受一个字符串作为参数,表示对Symbol实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。
- 由于每一个Symbol值都是不相等的,这意味着Symbol值可以作为标识符,用于对象的属性名,就能保证不会出现同名的属性。这对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心改写或覆盖。Symbol值作为对象属性名时,不能用点运算符。在对象的内部,使用Symbol值定义属性时,Symbol值必须放在方括号之中。
1 // Symbol: es6新增数据类型,表示独一无二的值
2 // 解决问题: 如果添加的对象属性名重复,解决属性名重复
3 var obj = { name: 'xixi', age: 13, name: 'dfs' }
4 console.log(obj) // {age: 13, name: 'dfs'}
5
6 //声明的方式
7 let s = Symbol()
8 let s1 = Symbol()
9 console.log(s == s1) //false
10
11 let s2 = Symbol('s2') // 's2' 参数表示描述信息, 没啥用
12
13 // 实际运用
14 var id = Symbol()
15 var obj1 = { id: 1, [id]: 100 } // 该对象重复定义id时,
16 console.log(obj1) //{id: 1, Symbol(): 100}, 相当于改对象有两个id属性
17 console.log(obj1[id]) // 100 只能通过中括号形式来获取,不能使用扩展运算符...
18 //注意 在我们使用 for in 或者 Object.keys 来获取属性是,是不能获取到 Symbol添加的这个属性的
19 for (var i in obj1) {
20 console.log(i) //id,
21 }
22 console.log(Object.keys(obj1)) // id
es6的Symbol数据类型的更多相关文章
- ES6——Symbol数据类型
什么是 Symbol ? Symbol 表示独一无二的值,他是js中的 第七种数据类型. 基本的数据类型:null, undefined number boolean string symbol 引用 ...
- ES6中关于数据类型的拓展:Symbol类型
ES5中包含5种原始类型:字符串.数值.布尔值.null.undefined.ES6引入了第6种原始类型——Symbol. ES5的对象属性名都是字符串,很容易造成属性名冲突.比如,使用了一个他人提供 ...
- Es6(Symbol,set,map,filter)
首先再讲这几个新东西之前,先说一个Es6中新出的扩展运算符(...) 1.展开运算符,就是把东西展开,可以用在array和object上 比如: let a=[,] let b=[,...a,]//[ ...
- ES6之Symbol
ES6中Symbol是为了防止属性名冲突而引入的,是独一无二的.Symbol值是通过Symbol函数生成.Symbol值不能与其他类型的值运算否则会报错且Symbol的值可以转换为字符串或者是布尔值但 ...
- symbol数据类型
symbol声明的类型独一无二 概念:表示独一无二的值,永远不相等 s1 = Symbol() s2 = Symbol() s1 !== s2 基本使用: 通过Symbol函数生成,得到一个symbo ...
- ES6的新增数据类型:Symbol
简介:Symbol类型是es6新增的一个数据类型,Es5的基本数据类型(undefined,null,Object,function,Number,string) Symbol值通过Symbol函数生 ...
- 理解ES6的新数据类型:Symbol
ES6之前的数组类型 在ES6之前JS只有6种数据类型,分别是:Undefined.Null.布尔值(Boolean).字符串(String).数值(Number).对象(Object). ES6引入 ...
- ES6 新增基本数据类型Symbol
ES6 增加了一个新的基本数据类型 symbol. 不过,和其他基本数据类型相比,它有点与众不同,因为它没有字面量的表现形式,而且创建的方式也有点奇怪,只能通过调用全局函数Symbol()来完成. l ...
- ES6深入浅出-10 ES6新增的数据类型-1.Symbol与隐藏属性
ES5现有的数据类型.7种数据类型. 新的类型是属于Object 最普通的类型.plain object 数组array 函数function 下面这些都属于Object类型. 今天要讲的 set类型 ...
- ES6(六) --- Symbol
概述: ES5 中属性名都是字符串,这容易就造成命名的冲突,特别是在混入模式(mixin模式)下.为解决这个问题ES6 引入了Symbol, Symbol是一种新的基本数据类型,表示独一无二的值! ...
随机推荐
- 这几年专注于流程管理与RPA落地
这些年专注于流程管理与RPA落地,乙方有些辛苦,但,也得到了客户的认可,开心. 做过多个流程管理咨询,发现信息化落地后孤岛很多,RPA 刚好可以作为各个系统的有效补充,把系统有机的结合在一起. 企业信 ...
- logrotate 切割Tomcat的catalina.out文件
使用logrotate进行切割. 在/etc/logrotate.d下,新建tomcatrotate,编辑tomatrotate,写入如下内容: /usr/local/tomcat/logs ...
- django静态文件,form表单提交数据,连接mysql,操作ORM
静态文件配置 1. 什么是静态文件 css js img ... 2. 静态文件的存储位置 ''' 我们在创建Django项目的时候,没有生成static目录,我们会把静态文件存储在static目录下 ...
- tcpdump 对指定pod 进行抓包分析
tcpdump kubectl get pod -n imas imas-chabot-759bc8c6cf-bvq7m -o json 获取到pod所在的容器信息,在对应的宿主机获取卡片信息. do ...
- 【BUUCTF】ACTF2020 新生赛Include1 write up
查看源代码+抓包都没有发现什么信息,只有这两个东东 <meta charset="utf8"> Can you find out the flag? <meta ...
- 网络基础-分层思想和TCP/TP协议族
一 .分层思想 首先,什么是分层?1984年国际标准化组织(iso)颁布了开放系统互联(osi)参考模型:一个开放式体系结构,将网络分成七层. 分层 功能 应用层 网络服务与最终用户的一个接口 表示层 ...
- Vue插件开发,全局插件和按需加入插件
年前手下事情少,找了一个下午研究了一下Vue插件开发,首先要感谢B站的前端小野森森-2,借鉴了他的视频,自己也写了一下.把过程记录下来. 首先用vite建一个空项目. 然后新建modules文件夹,和 ...
- 痞子衡嵌入式:在i.MXRT1060-EVK上利用memtester程序给SDRAM做压力测试
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在i.MXRT1060-EVK上利用memtester程序给SDRAM做压力测试. 我们知道恩智浦i.MXRT1xxx系列是高性能MCU ...
- 如何使用Mutex确保并发程序的正确性
1. 简介 本文的主要内容是介绍Go中Mutex并发原语.包含Mutex的基本使用,使用的注意事项以及一些实践建议. 2. 基本使用 2.1 基本定义 Mutex是Go语言中的一种同步原语,全称为Mu ...
- 【AI 全栈 SOTA 综述 】这些你都不知道,怎么敢说会 AI?【语音识别原理 + 实战】
章目录 前言语音识别原理 信号处理,声学特征提取 识别字符,组成文本 声学模型 语言模型 词汇模型语音声学特征提取:MFCC和LogFBank算法的原理实战一 ASR语音识别模型 ...