web前端技术分享

proxy深层代理

2020-09-28  本文已影响0人  在小白的路上越走越远

在get方法内进行递归,判断是否为对象,为对象继续递归,否则直接返回获取数值。

let obj = {
    name: 'Eason',
    age: 30,
    happy: {
        aa: '11'
    }
}

let handle = {
    get(target, key) {
        if (Object.prototype.toString.call(target[key]) === '[object Object]') {
            return new Proxy(target[key], handle)
        }
        return target[key] + '获取'
    },
    set(target, key, value) {
        target[key] = value + '设置';
    }
}
let proxy = new Proxy(obj, handle)
proxy.name = '9opsdsa8'
console.log(proxy.name)
proxy.happy.aa = '99iiyy'
console.log(proxy.happy.aa);
上一篇下一篇

猜你喜欢

热点阅读