ES6新特性:let,解构赋值,模板字面量,箭头函数,reat参数,扩展运算符,symbol,迭代器,promise,Set,Map。新接口:assign()

 1.let(经典案例:for循环包延时器)

2.解构赋值:只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值。

解构赋值 - JavaScript | MDN

3.模板字面量`${}`

4.箭头函数

箭头函数里面的this是静态的,this始终指向函数声明时所在作用域下的this。即使调用了call()或者apply(),也只是相当于传参,不会改变this指向。

不能构造实例化对象,

不能使用arguments变量

var f=function(){
	console.log(arguments)
}
f(1,2,3)

 

 错误

5.reat参数:以数组形式返回参数,比arguments的对象形式方便。这个参数放所有参数最后

function fn(...args){
    console.log(args)
}

6.扩展运算符...:扩展运算符能将『数组』转换为逗号分隔的『参数序列』

 应用:

数组的合并

数组的克隆

 伪数组->真数组

 7.symbol,创建独一无二的值。不能与其他值进行计算。定义的属性名不能用for...of遍历,可以用代码中方法获取属性名数组

let s1=Symbol("1")
let s2=Symbol("2")
let s3=Symbol("3")

let obj={
    [s1]:11,
    [s2]:12,
    [s3]:13,
    s4:14
}

let symkeys=Object.getOwnPropertySymbols(obj)//获取symbol属性
console.log(symkeys)//[ Symbol(1), Symbol(2), Symbol(3) ]
for(it of symkeys){
    console.log(obj[it])//11  12  13
}

Object.getOwnPropertyNames(obj)//获取非symbol属性

var symkeys=Reflect.ownKeys(obj)//同时获取两种属性
console.log(symkeys)//[ 's4', Symbol(1), Symbol(2), Symbol(3) ]
for(it of symkeys){
    console.log(obj[it])//14  11  12  13
}

 

 8.迭代器生成器

生成器解决了回调地狱的问题

var a=["a","b","c"]

for(i in a){
	console.log(i)
}//0,1,2

for(i of a){
	console.log(i)
}//a,b,c

9.promise 和 then解决回调地狱,用链式代替嵌套式,类似于用迭代代替递归

 10,Set 集合

let set=new Set()
//类型是Object
let set=new Set([1,2,3,2,3])
//set={1,2,3} 自动去重
set.add(4)
set.delete(1)
set.has(2)//True
set.clear()//清空
for(let v of set){//遍历
    console.log(v)
}

应用:

1)数组去重

let arr=[1,2,3,1,2,3]
console.log([...new Set(arr)])

2)交集

let arr1=[1,2,3,1,2,3]
let arr2=[2,3,4,2]
let result=[...new Set(arr1)].filter(item=>new Set(arr2).has(item))

3)并集

let arr1=[1,2,3,1,2,3]
let arr2=[2,3,4,2]
var result=[...new Set(arr1.concat(arr2))]
//或
var result=[...new Set([...arr1,...arr2])]

4)差集

var a=["a","b","c"]
var b=[1,"a"]
let res=[...new Set(a.filter(item=>! new Set(b).has(item)))]
console.log(res)

11.Map   升级版的对象

类似于对象,是键值对的集合,但是键的范围不限于字符串,各种类型的值都可以作为键(包括对象)。Map也实现了iterator接口,所以可以使用扩展运算符和for...of遍历。

Map的属性和方法:

.size() 

.set(key,value)

.get(key)

.has(key)

.clear()

12.weakMap、weakSet

当其中的weakMap中的键或weakSet中的值不被使用的时候,就会被垃圾回收机制回收。

弱键和弱元素通常是DOM元素,如果DOM元素被移除,在js中为节点关联的元数据也会被销毁。

新接口:

1.Object.assign是ES6新添加的接口,主要的用途是用来合并多个JavaScript的对象。

Object.assign()接口可以接收多个参数,第一个参数是目标对象,后面的都是源对象,assign方法将多个原对象的属性和方法都合并到了目标对象上面,如果在这个过程中出现同名的属性(方法),后合并的属性(方法)会覆盖之前的同名属性(方法)。

var target  = {a : 1}; //目标对象
var source1 = {b : 2}; //源对象1
var source2 = {c : 3}; //源对象2
var source3 = {c : 4}; //源对象3,和source2中的对象有同名属性c
Object.assign(target,source1,source2,source3);
//结果如下:
//{a:1,b:2,c:4}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值