zoukankan      html  css  js  c++  java
  • (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
    })
  • 相关阅读:
    共用体类型,结构体类型
    动态内存分配与指向它的指针变量
    向上转型,向下转型
    枚举类型中的构造方法、成员方法
    由setTimeout()里的this引出的this
    eclipse快捷键
    js中运算符的优先级
    关于js闭包杂记
    sublime在Mac osx下安装z-codeing(即emmet)
    利用js得到某个范围内的整数随机数
  • 原文地址:https://www.cnblogs.com/xiaohaha668/p/10656853.html
Copyright © 2011-2022 走看看