《es6标准入门》chapter11中关于Proxy的一个错误例子的纠正
2017-04-06 23:10
316 查看
在原书第二版的p120,这里有一个使用Proxy实现管道化调用的例子,想法很好,但是代码有问题,下面是更正之后的代码。
由于我是在node环境下运行,所以我把几个全局函数定义到global内了,如果是在浏览器下测试,则可以保留原有这部分内容。
由于我是在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)
相关文章推荐
- 关于纠正 C/C++ 之前在函输内改变 变量的一个错误想法。
- 关于Java中的继承和组合的一个错误使用的例子
- 关于Java中的继承和组合的一个错误使用的例子
- 另外一个关于发包的例子
- 一个关于C++ Inline关键字的引发的一个错误
- 关于一个junit的例子的分析
- 关于Java的RMI编程的一个简单的例子
- 一个低级错误,关于timer
- 关于加载设计器遇到一个或多个错误问题的解决方案
- .Net 2.0开始支持泛型,下面给出摘录一个MSDN上关于泛型的例子
- 关于socket通信的一个例子!
- 关于类的静态变量和非静态变量区别的一个研究例子
- 关于运算符的一个例子
- 关于Java的RMI编程的一个简单的例子
- Oracle关于imp的一个错误ORA-00907的解决方案
- 用Nhibernate连接多个数据库,两个Mysql,一个Sql。还有关于异常和错误码的讨论。包含源代码
- 关于封装--一个有趣的C++例子
- 一个关于Applet的例子,需要的可以参考一下!
- 关于如何计算子网掩码和广播地址的问题的一个例子
- 一个关于反射的小例子