临阵磨枪,快速应用ES6(2)

137 阅读1分钟

判断相等

#is() //严格相等
NaN===NaN //false
Object.is(NaN,NaN)//true

assign 合并对象

let a = {a='lhd'}
let b = {b='李白'}
let c = Object.assign(a,b,c)
console.log(c)#{a: "lhd", b: "李白"}

Set

#数组去重
let setArr = new Set(['lhd','web','h5'])
setArr.add('cc')
console.log(setArr)
#has
console.log(setArr.has('lhd'))//#true
#clear
setArr.clear()//#清空
setArr.delete('lhd')//#删除指定值

for(let item of setArr){
    console.log(item)
}

WeakSet

let weakObj =  new WeakSet();
let obj = {name:'lhd'}
weakObj.add(obj)

map

let map = new Map();
let json = {name:'lhd'}
#插入
map.set('lhd',json)
#获取
map.get('lhd')
#删除
map.delete('lhd')
#清空
map.clear()
#查找//bool
map.has('lhd')

proxy ES6 增强 对象,函数(代理 拦截 重处理)

#get 获取值  get拦截 执行流程
# targe = this; key = key;
# pro.get=> target[key]
#set 更改值拦截
#target this对象 key= key val = val 

let targe = {
    add:function(val){
        return val + 100
    },
    name:'I am LHD'
}

let handler = {
    get:function(target,key,property){
        console.log('iiii')
        return target[]
    },
    set:function(target,key,val,receiver){
        console.log(`setting ${key} = ${val}`)
        return target[key] = val
    },
    apply(target,ctx,args){
        console.log('do apply')
        return Reflect.apply(...arguments)
    }
}

let pro = new Proxy(target,handler)
console.log(pro.name)

promise 解决es5回调地狱

#省市区联动

let state = 1;

function step1(resolve,reject){
    if(state==1){
        #回调参数
        resolve('获取省成功')
        state=2
    }else{
        reject('获取省错误')
    }
}

function step2(resolve,reject){
    if(state==2){
        #回调参数
        resolve('获取市成功')
        state=3
    }else{
        reject('获取市出错')
    }
}

function step3(resolve,reject){
    if(state==3){
        #回调参数
        resolve('获取县成功')
    }else{
        reject('获取县出错')
    }
}

new Promise(step1).then((val)=>{
	console.log(val)
    return new Promise(step2)
}).then((val)=>{
	console.log(val)
    return new Promise(step3)
}).then((val)=>{
    console.log(val)
})

Class 类

class Coder{

    #构造函数
    constructor(a,b){
        this.a = a;
        this.b = b;
    }

    name(val){
        console.log(val)
        return val
    }
    
    skill(val){
        #this.name(val)  name()需要有返回值
        console.log(this.name(val)+':'+'技能:'+val)
    }
}
let obj = new Coder(1,2);
obj.name('lhd')

#继承父类
class htmler extends Coder{
    
}
let dd = new htmler(1,2);

dd.name('cc')