修改:这不是重复的o.O
我是那个问“重复”问题的人,但这些是不同的动物。
这是我想要最终实现的目标,我已经解释过了: https://jsfiddle.net/kpion/osqsz83g/
我展示的代码只是我遇到的一个问题。
所以不,除非我误解,否则所有评论都没有用:(
我需要的是将参数传递给'get'陷阱,这样我就可以在许多其他对象中调用该方法,传递参数。
原始
我想使用Proxy对象来捕获函数调用。我需要知道用户在调用函数时使用了什么参数。
喜欢这里:
(function() {
'use strict';
console.clear();
//some empty class where I want to trap methods & props
class X {
}
let proxy = {
get: function(target, prop, receiver) {
console.log(arguments);//this gives the arguments of the 'get' trap itself.
//I know I can do this to play with arguments, but this doesn't solve my another problem.
/*
return function(...args) {
console.log('wrapper args:', args);
return 42;
}*/
},
};
let p = new Proxy(X, proxy);
console.log(p.test('some arg passed'));
})();
我做p.test('some arg passed')
我希望阅读陷阱中的'某些arg传递'。
工作代码:https://jsfiddle.net/kpion/44L8veLa/3/
如果您认为这可能是由于XY问题,那么是的,这是可能的:)
以上是一个简化的代码,我的最终目标是围绕querySelectorAll创建一个简单的包装器。我想让这成为可能:
coolSelector('div').setAttribute('a','b');
只有几行代码。没有弄乱原型或类似的东西。只需调用已有的DOM方法即可。目前我有这个:
https://jsfiddle.net/kpion/osqsz83g/
EDIT2:
如果有人感兴趣,这里斗争仍在继续:Handling property.subproperty in Proxy handler