最近在学习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对象。请问是我哪里使用错误么?