es6 新增数据类型_ES6新增特性整理
整理这些东西主要是为了方便自己想用的时候能够快速查询,其中不可避免会引用、借鉴到其他大佬的优秀成果,还请多多包涵。如有不妥之处,还请不吝赐教。
pany:ES6新特征总结zhuanlan.zhihu.com
方塘HCI:全面掌握ECMAScript新特性——ES6声明与数据类型(一)zhuanlan.zhihu.com
一、新增数据类型
Symbol
猿话:Symbol-ES6神奇的数据类型zhuanlan.zhihu.com
1.特性
Symbol()函数,返回一个symbol类型的值,该类型具有静态属性和静态方法。
每个Symbol()返回的symbol值都是唯一的,这是该数据类型仅有的目的,可以作为对象属性的标识符使用
Symbol()存在原型链Symbol.prototype
不支持语法:"new Symbol()"创建对象
不支持将一个 symbol 值转换为一个 number。
不支持将一个字符隐式创建,例如: symbol('a') + '1231'
2.总结
- Symbol用法很强大普遍,es5私有api中已经有很多的使用,例如:常用的
String.prototype.split()
。 - Symbol创建的值唯一。
- 替代传统的常量定义保证唯一并且不被串改将是非常友好的。
- 定义私有属性将会非常方便。
Set
Set是类似于数组,但成员的值都是唯一的数据结构。//Set(3) {"一月", "二月", "三月"}
基本使用
//添加数据
monthSets.add("一月");
monthSets.add("二月").add("三月");console.log(monthSets); //Set(3) {"一月", "二月", "三月"}//遍历集合Set
//forEach():使用回调函数遍历每个成员
monthSets.forEach((item) => console.log(item)); //一月 二月 三月//for...of:直接遍历每个成员
for (const item of monthSets) {console.log(item); //一月 二月 三月
}//删除数据
monthSets.delete("二月");
console.log(monthSets); // Set(2) {"一月", "三月"}
monthSets.clear(); //
console.log(monthSets); // Set(0) {}
常见应用
let monthSets = new Set(["一月", "二月", "三月"]);//一、快速判断数据元素是否存在
monthSets.has("一月"); //true//二、统计数据元素个数
monthSets.size; //3
console.log(monthSets.size); //3//三、数组去重
let arr = [1, 2, 3, 2, 3, 4, 5];
let set = new Set(arr);
console.log(set); // {1, 2, 3, 4, 5}//四、合并去重
let arr = [1, 2, 3];
let arr2 = [2, 3, 4];
let set = new Set([...arr, ...arr2]);
console.log(set); // {1, 2, 3, 4}
WeakSet
WeakSet与Set类似,也是不重复的值的集合,但WeakSet的成员只能是对象。WeakSet引用的对象都是弱引用,如果其他对象不再引用该对象,那么垃圾回收机制就会自动回收这些对象所占用的内存,不考虑该对象还存在于WeakSet之中。
Map
Map是一种键值对集合,与对象类似,但Object只支持“字符串:值”,而Map支持“各种类型的值:值”,map给我们提供了更合适的“键值对”数据结构。
基本使用
//定义
let map = new Map();//添加数据
let address = { address: "江苏" };
map.set("name", "ES6");
map.set(27, "年龄信息");
map.set(address, "地址信息");console.log(map); //{"name" => "ES6", 27 => "年龄信息", {…} => "地址信息"}//获取数据
let name = map.get("name");
let age = map.get(27);
let addressObj = map.get(address);console.log(name, age, addressObj);//获取成员数量
console.log(map.size); //3//判断是否指定key成员
console.log(map.has("name")); //true
Map的遍历
map通常可以用forEach和for...of的方式进行遍历。
WeakMap
WeakMap与Map类似,也是用来生成键值对的集合。但WeakMap只接受对象作为键名,并且键名所指向的对象,属于弱引用对象。https://zhuanlan.zhihu.com/p/260328074
二、const、let声明变量方式
- 有块级作用域
- 不会声明提升
三、模板字符串
四、对象解构赋值
五、延展运算符(...)
六、对象字面量增强
七、Class类的支持
八、Promise异步对象
忽知:Promise整理zhuanlan.zhihu.com
九、模块import、export
十、数组、对象新增方法
Array
- filter
array.filter(item => { return '条件'}) // 返回过滤后的数组
- some
array.some(item => { return '条件'}) // 如果数组中一旦有满足条件的成员,返回true,否则返回false。
- every
array.every(item => { return '条件'}) // 如果数组中所有成员满足条件,返回true,否则返回false。
- map
array.map(item => { return '包装后的新成员'}) // 返回新包装的成员组成的新数组。
- from
Array.from('类数组') // 会将一个类数组结构数据转换成数组。比如数组去重 Array.from(new Set(array))
- flat
flat用于将嵌套的数组“拉平”。该方法返回一个新数组,对原数据没有影响。
[1, 2, [3, 4]].flat() // [1, 2, 3, 4]
- of
Array(3) // [,,]Array.of(3) // [3]
- find、findIndex、includes...
object
ES6 入门教程es6.ruanyifeng.com
- Object.assign
Object.assign(target,obj1,obj2,...)
// 可以用来合并对象,将第二个参数obj1以及后边的对象都合并在target中。属性名相同,后边的会覆盖前边的,target中没有的属性,则会新增。最后返回合并后的对象。
// assign方法只是浅拷贝。
持续整理中...
es6 新增数据类型_ES6新增特性整理相关推荐
- ES5 to ESNext — 自 2015 以来 JavaScript 新增的所有新特性
type: FrontEnd title: ES5 to ESNext - here's every feature added to JavaScript since 2015 link: medi ...
- CSS3新增了哪些新特性?
CSS3新增了哪些新特性? 一.是什么 css,即层叠样式表(Cascading Style Sheets)的简称,是一种标记语言,由浏览器解释执行用来使页面变得更美观 css3是css的最新标准,是 ...
- HTML5新增标签及废除标签整理
HTML5新增标签及废除标签整理(有些很偏就没有列出) 1>新增的标签 1>section元素 表示页面中的一个内容区块,比如章节.页眉.页脚或页面的其他部分,其实就像div,比div更具 ...
- Redis4.0、5.0、6.0、7.0特性整理(持续更新)
最近研究研究新版本redis的新特性,网上查了查资料,这里记录一下. 0. Redis的版本迭代和里程碑 Redis从发布至今,已经有十余年的时光了,一直遵循着自己的命名规则: 版本号第二位如果是奇数 ...
- ES6基本数据类型总结
ES5的基本数据类型有:Number,String,Boolean,null,undefined ES6基本数据类型:Number,String,Boolean,null,undefined,symb ...
- mysql5.0版本特性_mysql各版本的新特性整理
mysql各版本的新特性整理 一.各版本的常用命令差异 show innodb status\G mysql-5.1 show engines innodb status\G mysql-5.5 关于 ...
- Android 各版本演变特性整理
目录 官网: Android 12(S) Android 11(R) Android 10(Q) Android 9.0 (P) Android 8.0 (O) Android 5.0 Android ...
- 安卓可知可会,面向开发者的历代安卓特性整理(未完结)
面向开发者的历代安卓特性整理 Android 版本历史 Name Version Issue date API Level Android 1.0 1.0 2008年09月23日 1 Android ...
- 【MySQL】MySQL 5.7 新特性整理
MySQL 5.7 新特性有很多,有以下这些 一.InnoDB变更 默认存储引擎改为InnoDB:MySQL 5.7将默认存储引擎改为InnoDB,以推动其成为事实标准.这意味着任何未指定存储引擎的表 ...
最新文章
- hdu1999 不可摸数 好题.
- java 合并流_使用流执行聚合
- Android NFC 开发实例
- 架构师养成之道-03-jvm内存分布详解
- 基于SpringJDBC 实现关键功能-EntityOperation
- wpf中的datagrid中如何显示图片
- 饿了么商家电脑版_饿了么企业版荣膺“2020中国十大影响力人力资源品牌”大奖...
- java 修饰_Java 修饰符
- python字符串描述_Python字符串
- 将数组项复制到另一个数组中
- 关于Ajax的一揽子工程(2)
- TCP/IP协议与Http协议的区别
- 磁盘不见了只剩一个c盘_电脑硬盘分区不见了怎么恢复数据?
- 代理模式---论坛权限控制代理
- 网传互联网公司大裁员
- phyton环境添加与工作空间设置
- Android 智能手机开发概述
- java socket demo及其缺点
- SY6982E芯片了解
- 打开电脑摄像头使用opencv保存的avi文件打不开
热门文章
- Oracle数据库应用系统结构
- 权威可信 | 华为云云测通过中国电子技术标准院软件测试工具能力评价
- 高并发中,那些不得不说的线程池与ThreadPoolExecutor类
- 应对全场景AI框架部署挑战,MindSpore“四招”让你躺平
- 520特辑丨码神VS爱神:盘点程序员的四大男友力,你偏爱哪一种?
- 如何方便记忆和理解类图里的线条
- 应对游戏业务的四大“崩溃”场景有妙招,安全畅玩不是梦!
- 一图看懂华为云DevCloud如何应对敏捷开发的测试挑战
- SQL Server LIKE语句使用举例
- HTML左侧下拉列表,HTML中的下拉列表 select