js 动态代理

// useProxy.js
const useProxy = () => {
    const env_arr = ['document', 'window','navigator', 'localStorage']
    const env = {}
    env_arr.forEach((value, index, array) => {
        env[value] = env[value] ?? {}
        env[value] = new Proxy(env[value], {
            get(target, p, receiver) {
                console.log(`【${value}】 取属性:${p}`)
            },
            set(target, p, newValue, receiver) {
                console.log(`【${value}】 设置属性值:${p} = ${newValue}`)
                return true
            }
        })
    })
    return env;
}

module.exports = useProxy

使用:

const useProxy = require("./useProxy")
const {window, document, navigator, localStorage} = useProxy()


let innerHeight = window.innerHeight;
window.innerHeight = 123;
// 【window】 取属性:innerHeight
// 【window】 设置属性值:innerHeight = 123
posted @ 2023-10-24 22:54  灵火  阅读(18)  评论(0编辑  收藏  举报