Mfaescek 2019-09-17 10:19 采纳率: 0%
浏览 704

ES6 proxy如何拦截并获取对象内部方法

最近在学习es6的相关知识,刚好看到proxy部分。我根据示例写一段拦截能够正常运行。但是想要在这个基础上做一些修改就出现了问提。我想要拦截某个对象的内部方法,获取传入的参数后做一些修改。但是发现拦截成功后,没有办法获取到参数。目前还没有找到原因

let target = {
        name: 'I am the target',
        say(name) {
            return name;
        },
    }
    let handler = {
        get: function(target, prop, bindthis, e){
            if(target[prop] && target[prop] instanceof Function){
                return this.apply(prop, target, ...arguments)
            }else{
                return target[prop]
            }
        },
        apply: function (fnName, ctx, args) {
                //这里我本来想要获取到后面调用时传入的 132 但是args参数传入的是调用的上下文对象。
                        console.log(args)
            if(fnName == 'say'){
                ctx.name = 'I had changed'
            }
            return ctx[fnName];
        }
    };

    let p = new Proxy(target, handler);
         console.log(p.say('132'))

我想要通过apply拦截我调用时传入的132,但是实际打印出来发现args是调用的target对象。请问是我哪里使用错误么?

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2019-09-17 12:58
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器