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

本文修正了一段使用Proxy实现的管道化调用代码,并详细解释了修改的原因及如何在Node环境中运行。通过一系列全局函数的调用展示了数据处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

转载于:https://www.cnblogs.com/strinkbug/p/6675962.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值