整理这些东西主要是为了方便自己想用的时候能够快速查询,其中不可避免会引用、借鉴到其他大佬的优秀成果,还请多多包涵。如有不妥之处,还请不吝赐教。


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新增特性整理相关推荐

  1. ES5 to ESNext —  自 2015 以来 JavaScript 新增的所有新特性

    type: FrontEnd title: ES5 to ESNext - here's every feature added to JavaScript since 2015 link: medi ...

  2. CSS3新增了哪些新特性?

    CSS3新增了哪些新特性? 一.是什么 css,即层叠样式表(Cascading Style Sheets)的简称,是一种标记语言,由浏览器解释执行用来使页面变得更美观 css3是css的最新标准,是 ...

  3. HTML5新增标签及废除标签整理

    HTML5新增标签及废除标签整理(有些很偏就没有列出) 1>新增的标签 1>section元素 表示页面中的一个内容区块,比如章节.页眉.页脚或页面的其他部分,其实就像div,比div更具 ...

  4. Redis4.0、5.0、6.0、7.0特性整理(持续更新)

    最近研究研究新版本redis的新特性,网上查了查资料,这里记录一下. 0. Redis的版本迭代和里程碑 Redis从发布至今,已经有十余年的时光了,一直遵循着自己的命名规则: 版本号第二位如果是奇数 ...

  5. ES6基本数据类型总结

    ES5的基本数据类型有:Number,String,Boolean,null,undefined ES6基本数据类型:Number,String,Boolean,null,undefined,symb ...

  6. mysql5.0版本特性_mysql各版本的新特性整理

    mysql各版本的新特性整理 一.各版本的常用命令差异 show innodb status\G mysql-5.1 show engines innodb status\G mysql-5.5 关于 ...

  7. Android 各版本演变特性整理

    目录 官网: Android 12(S) Android 11(R) Android 10(Q) Android 9.0 (P) Android 8.0 (O) Android 5.0 Android ...

  8. 安卓可知可会,面向开发者的历代安卓特性整理(未完结)

    面向开发者的历代安卓特性整理 Android 版本历史 Name Version Issue date API Level Android 1.0 1.0 2008年09月23日 1 Android ...

  9. 【MySQL】MySQL 5.7 新特性整理

    MySQL 5.7 新特性有很多,有以下这些 一.InnoDB变更 默认存储引擎改为InnoDB:MySQL 5.7将默认存储引擎改为InnoDB,以推动其成为事实标准.这意味着任何未指定存储引擎的表 ...

最新文章

  1. hdu1999 不可摸数 好题.
  2. java 合并流_使用流执行聚合
  3. Android NFC 开发实例
  4. 架构师养成之道-03-jvm内存分布详解
  5. 基于SpringJDBC 实现关键功能-EntityOperation
  6. wpf中的datagrid中如何显示图片
  7. 饿了么商家电脑版_饿了么企业版荣膺“2020中国十大影响力人力资源品牌”大奖...
  8. java 修饰_Java 修饰符
  9. python字符串描述_Python字符串
  10. 将数组项复制到另一个数组中
  11. 关于Ajax的一揽子工程(2)
  12. TCP/IP协议与Http协议的区别
  13. 磁盘不见了只剩一个c盘_电脑硬盘分区不见了怎么恢复数据?
  14. 代理模式---论坛权限控制代理
  15. 网传互联网公司大裁员
  16. phyton环境添加与工作空间设置
  17. Android 智能手机开发概述
  18. java socket demo及其缺点
  19. SY6982E芯片了解
  20. 打开电脑摄像头使用opencv保存的avi文件打不开

热门文章

  1. Oracle数据库应用系统结构
  2. 权威可信 | 华为云云测通过中国电子技术标准院软件测试工具能力评价
  3. 高并发中,那些不得不说的线程池与ThreadPoolExecutor类
  4. 应对全场景AI框架部署挑战,MindSpore“四招”让你躺平
  5. 520特辑丨码神VS爱神:盘点程序员的四大男友力,你偏爱哪一种?
  6. 如何方便记忆和理解类图里的线条
  7. 应对游戏业务的四大“崩溃”场景有妙招,安全畅玩不是梦!
  8. 一图看懂华为云DevCloud如何应对敏捷开发的测试挑战
  9. SQL Server LIKE语句使用举例
  10. HTML左侧下拉列表,HTML中的下拉列表 select