如何在代理处理程序

时间:2018-04-29 20:46:22

标签: javascript ecmascript-6

修改:这不是重复的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

0 个答案:

没有答案