zoukankan      html  css  js  c++  java
  • 《es6标准入门》chapter11中关于Proxy的一个错误例子的纠正

    在原书第二版的p120,这里有一个使用Proxy实现管道化调用的例子,想法很好,但是代码有问题,下面是更正之后的代码。
    由于我是在node环境下运行,所以我把几个全局函数定义到global内了,如果是在浏览器下测试,则可以保留原有这部分内容。
    var pipe=(function(){
        var pipe;
        return function(value){
            pipe=[];
            return new Proxy({}, {
                get(target, fnName, receiver){
                    console.log('enter get, fnName ' + fnName.toString())
                    if(fnName == 'get'){
                        console.log('begin to calc the value');
                        return pipe.reduce(function(val, fn){
                            return fn(val);
                        }, value);
                    }
                    pipe.push(global[fnName]);
                    console.log(pipe, pipe.length);
                    console.log(target);
                    //此处应该是要返回proxy对象,而不是原来的target对象
                    return receiver;
                }
            });
        }
    }());
    //此处是为了兼容node环境而做的修改
    global["double"] = n =>n*2;
    global["pow"] = n =>n*n;
    global["reverseInt"] = n=>n.toString().split('').reverse().join('') | 0;
    console.log(pipe(3).double.pow.reverseInt.get)
     
  • 相关阅读:
    ==与is区别
    词典操作
    前端工具---取色截图测量
    css零碎合集
    基于bootstrap的在线布局工具
    js常用功能工具库--Underscore.js
    前端资源荟萃
    在线绘图工具---processon
    表单form浅谈
    前端工具----iconfont
  • 原文地址:https://www.cnblogs.com/strinkbug/p/6675962.html
Copyright © 2011-2022 走看看