您的位置:首页 > 其它

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

2017-04-06 23:10 316 查看
在原书第二版的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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: