(es6学习笔记04)用Proxy进行预处理,promise对象的使用

Proxy的基本形式,
第一个花括号代表方法主体,第二个代表Proxy代理处理区域(相当于钩子函数)
new Proxy({},{})
get属性是在得到某对象属性值时预处理的方法,接收三个参数
1、target:得到的目标值
2、key:目标的key值相当于对象的属性
3、property:不常用用法未学习,
set属性,是值你要改变Proxy属性值时,进行的预先处理
1、target目标值
2、key目标值
3、value要改变的值
4、receiver改变前的原始值
var pro = new Proxy({
    add: function (val) {
        return val + 10;
    },
    name: 'I am Jspang'
}, {
    get: function (target, key, property) {
        //console.log(property);
        return target[key];
    },
    set:function (target,key,value,receiver) {
        console.log(`   setting ${key} = ${value}`);
        return target[key] = value;
    }
});
console.log(pro.add(1));
console.log(pro.name);
pro.name='小哈哈';
console.log(pro.name);

 apply的使用

add =function () {
    return '我是哈'
}
var handler = {
    apply(target,ctx,args) {
        console.log('dodo');
        console.log(Reflect.apply(...arguments))//我是哈
        return Reflect.apply(...arguments)
    }
}
var pro=new Proxy(add,handler);
console.log(pro())
 promise对象的使用(一个多步操作的过程)
let ste=1;
let ste2=2
function step1(res,rec) {
    console.log('1,洗菜');
    if (ste==1) {
        res('1,洗菜-完成')
    } else {
        rec('1,洗菜-失败')
    }
}
function step2(res,rec) {
    console.log('2,做饭');
    if (ste==1) {
        res('2,做饭-完成')
    } else {
        rec('2,做饭-失败')
    }
}
function step3(res,rec) {
    console.log('3,吃饭');
    if (ste==1) {
        res('3,吃饭-完成')
    } else {
        rec('3,吃饭-失败')
    }
}
new Promise(step1).then(function (val) {
    console.log(val);
    return new Promise(step2)
}).then(function (val) {
    console.log(val);
    return new Promise(step3)
}).then(function (val) {
    console.log(val);
    return val
})
原文地址:https://www.cnblogs.com/xiaohaha668/p/10656853.html