JavaScript Proxy: 修改實例屬性、方法

Proxy介紹:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy
直接上代碼:

function createProxyClass(TargetClass, proxyHandler) {
    const _constructor = TargetClass;

    const TargetProxyClass = function (..._) {
        let entity = new _constructor(..._);
        let entityProxy = new Proxy(entity, proxyHandler);
        return entityProxy;
    };

    return TargetProxyClass;
}

用法如下:

    let handler = {
        set: function (target, p, value) {
            console.log("@")
            target[p] = () => {
                console.log("proxy");
            }
            return false;
        }
    }

    class A {
        a(){}
    }
    
    A = createProxyClass(A, handler);

    var a = new A();
    a.a = () => console.log("!"); // 對 a 方法進行修改,會進入 handler 的 set 方法
    a.a(); // 這裏會輸出 proxy
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章