es6新增特性
1.let和const关键字
2.解构赋值
3.箭头函数
4.模板字符串:使用反引号``代替双引号创建字符串
5.标签模板
6.扩展运算符
7.新增了一些字符串和数组方法
数组方法::
01:of()是ES6新增的用于创建数组的方法。
of把传入的参数当做数组元素,形成新的数组。
let arr = Array.of(1,'2',[3],{}); console.log(arr); //[1,'2',[3],{}]
02:from()方法:可以将可迭代对象转换为新的数组。函数可接受3个参数:第一个表示将被转换的可迭代对象,第二个是回调函数,将对每个数组元素应用该回调函数,然后返回新的值到新数组,第三个是回到函数内this的指向。后两个参数是可选的。
let obj = { double(n) { return n * 2; } } let arr = [1, 2, 3]; console.log(Array.from(arr, function (n){ return this.double(n); }, obj)); // [2, 4, 6]
03:find()和findIndex(),查找数组中符合条件的元素值或索引,方法不会修改原数组。
let arr = [1,2,3,4,5]; console.log(arr.find((ele) => { return ele === 1; }));//1 console.log(arr.findIndex((ele) => { return ele > 4; })); //4
04:fill()/copyWithin(),替换数组中部分元素,会修改原数组。
let arr = [1,2,3,4,5]; console.log(arr.fill(0,0,3));//[0,0,0,4,5] //参数1表示目标值,参数2,3表示替换的始末位置,左闭右开区间。 console.log(arr.copyWithin(0,2,4));//[0,4,0,4,5] //参数1表示修改的起始位置,参数2,3表示用来替换的数据的始末位置,左闭右开区间。
05: includes()用于检测数组是否包含某个值,可以指定开始位置。
8.Symbol
9.迭代器(Iterator)
10.生成器
11.Promise承诺
12.Map和Set
Map对象用于保存键值对,任何值JavaScript支持的值都可以作为一个键或者一个值。这听起来和对象差不多啊?其实它们还是有区别的:
a) object的键只能是字符串或ES6的symbol值,而Map可以是任何值。
b) Map对象有一个size属性,存储了键值对的个数,而object对象没有类似属性。
13.
ES6对象新增了两个方法,assign和is。
assign用于浅拷贝源对象可枚举属性到目标对象。
e = {a:{ b: 1},b: 2}; let target = {c: 3}; Object.assign(target, source); console.log(target); //{c: 3, a: {b:1}, b: 2} source.a.b = 2; console.log(target.a.b); //2
如果有同名属性,那么目标对象的属性值会被源对象的属性值覆盖。所以数组的表现就有一点特别了:
数组的index就是属性名,当使用assign方法时,从第0位开始,目标数组的值便开始被源数组的值覆盖了。
is方法和(===)功能基本类似,用于判断两个值是否绝对相等。
Object.is(1,1);//true Object.is(1,true);//false Object.is([],[]);//false Object.is(+0,-0);//false Object.is(NaN,NaN);//true
他们仅有的两点区别是,is方法可以区分+0还是-0,还有就是它认为NaN是相等的
14:导入
ES6使用关键字 import 导入模块(文件),有两种常用的方式:
import ‘模块名称’ from ‘路径’;
import ‘路径’;