js-es6-Symbol新增的数据类型
来源:互联网 发布:chasing cars评价 知乎 编辑:程序博客网 时间:2024/05/30 23:41
1 什么是 Symbol ? Symbol,表示独一无二的值。它是 JS 中的第七种数据类型
let s1 = Symbol();let s2 = Symbol();console.log(s1===s2);//false
注意
Symbol 函数前不能使用 new 否则会报错,原因在于Symbol 是一个原始类型的值,不是对象。
Symbol 可以接收一个字符串作为参数,表示对Symbol的描述,主要是为了在控制台显示,或者转为字符串的时候,比较容易区分,不和任何数据相等
let s1 = Symbol('momo');let s2 = Symbol('zhuanzhuan');console.log(s1===s2);//falseconsole.log(Symbol('momo') === Symbol('momo'));//false
Symbol.for()首先在全局中搜索有没有以该参数作为名称的Symbol值,如果有,就返回这个Symbol值,否则就新建并返回一个以该字符串为名称的Symbol值。和直接的Symbol就点不同了。
let s3=Symbol.for('s3');let s4=Symbol.for('s3');console.log(s3===s4);//true
Symbol的作用可以解决冲突
let s1=Symbol.for('abc');let obj={[s1]:'123','abc':345,'c':456}console.log(obj);//{abc: 345, c: 456, Symbol(abc): "123"}
2 Symbol 数据类型的转换
可以转换成字符串,布尔值
console.log(String(Symbol('momo'))); // Symbol(momo)console.log(Symbol('zhuanzhuan').toString()); // Symbol(zhuanzhuan)console.log(!!Symbol()); // true不能做任何运算
console.log(Number(Symbol()));//报错console.log(Symbol('momo') + 'chuqiao');//报错console.log(Symbol('momo') * 100);//不能做任何运算。
3 作为对象的属性名
let yy = Symbol('yy');const obj = {};obj[yy] = 'hello';console.log(obj);//{Symbol(yy): "hello"}console.log(obj[yy]);//hello
let ss = Symbol('ss');const data = { [ss]: 'momo'};console.log(data);//{Symbol(ss): "momo"}console.log(data[ss]);//momo
4.不能被for...in for...of values() keys() entries()循环遍历
虽然不能被遍历,但是也不是私有的属性,可以通过Object.getOwnPropertySymbols方法获得一个对象的所有的Symbol属性
通过Reflect.ownKeys()可以遍历对象所有的属性
const data = { [Symbol()]: 123, a: 1, b: 2};console.log(data);//{a: 1, b: 2, Symbol(): 123}console.log(data['Symbol()']);//undefinedfor(let i in data){ console.log(i);//a b}console.log(Object.getOwnPropertySymbols(data)); // [Symbol()]console.log(data[Object.getOwnPropertySymbols(data)[0]]);//123console.log(Reflect.ownKeys(data));//["a", "b", Symbol()]
阅读全文
0 0
- js-es6-Symbol新增的数据类型
- es6 javascript Symbol数据类型
- ES6新数据类型 Symbol
- ES6新数据类型Symbol
- ES6--Symbol数据类型
- 浅谈ES6新增类型Symbol
- ES6——Symbol数据类型
- 十一,ES6新添的一种数据类型Symbol
- 对于ES6新数据类型Symbol()的理解和学习
- ES6新增数据类型Map、Set。
- JS中的Symbol数据类型
- 8、Symbol数据类型—ES6学习笔记
- ES6新增的数据结构
- ES6的新增特性1
- ES6--Symbol
- ES6 symbol
- 【ES6】symbol
- es6-symbol
- sysu-17C02签到
- python
- Java代码的执行顺序
- Python第三方库安装时编码问题utf-8变gbk
- 167. Two Sum II
- js-es6-Symbol新增的数据类型
- 趣图:程序员专属菜单
- AI 系统首次实现真正自主编程,完爆初级程序员
- 基础知识_晶振,复位,数码管
- 利用标准库中的accumulate求和
- linux下的文件处理命令
- 同步通信与异步通信
- POJ 3468 A Simple Problem with Integers-(线段树)
- Android之Keystore文件签名(获取查看apk签名)