码迷,mamicode.com
首页 > 其他好文 > 详细

《es6标准入门》chapter11中关于Proxy的一个错误例子的纠正

时间:2017-04-07 01:20:46      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:lob   code   例子   bsp   错误   split   ble   join   receive   

在原书第二版的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)

 

 

《es6标准入门》chapter11中关于Proxy的一个错误例子的纠正

标签:lob   code   例子   bsp   错误   split   ble   join   receive   

原文地址:http://www.cnblogs.com/strinkbug/p/6675962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!