js补环境代码

function watch(obj, name){
    var console_log = console.log
    return new Proxy(obj, {
        get(target, p, receiver){
			// 过滤没用的信息,不进行打印
            if (p === "Math" || p === "isNaN" || p === "encodeURI" || p === "Uint8Array" || p.toString().indexOf("Symbol(Symbol.") != -1){
                let val = Reflect.get(...arguments);
                return val
            } else {
                let val = Reflect.get(...arguments);
                list_evn = ['navigator','location','performance','childNodes','top','self','document','pqs666']  // 可以过滤比较长的值,手动添加方法名

                console_log(`取值:`,name, '.', p, ` =>`, list_evn.includes(p)?p+'值过长省略....':val);
                return val
            }
        },
        set(target, p, value, receiver){
            let val = Reflect.get(...arguments);
            console_log(`设置值:${name}.${p}, ${val} => ${value}`);
            return Reflect.set(...arguments)
        },
        has(target,key){
            // debugger;
            console_log(`in => ${key} in ${target}`)
            return key in target
        },
        deleteProperty: function (target, prop) {
            console.log("delete => " + prop);
            return true;
        },
    })
}


// 使用示例

//补的所有环境必须在这个里面才有效果
/////=============补window环境===============

window = globalThis;
window = watch(window, 'window')

debugger
posted @ 2025-02-07 11:01  公众号python学习开发  阅读(309)  评论(0)    收藏  举报