Object.defineProperty() 和 new Proxy()

发布时间 2023-06-30 16:26:21作者: left先生
let obj = {
    name: 'xiaoming',
    age: '18'
}

let name = 'lihua'

Object.defineProperty(obj, 'name', {
    get(){
        console.log('读取name属性1')
        return
    },
    set(newVal){
        console.log('监听name属性变化1')
        name = newVal
    }
})


const proxy = new Proxy(obj, {
    get(target, propName){
        console.log(`读取${propName}属性2`)
        return
    },
    set(target, propName, newVal){
        console.log(`监听${propName}属性变化2`)
        console.log(target, propName, newVal)
        name = newVal
    }
})

obj.name = 'xiaohong'

proxy.name = 'xiaolan'

console.log(name)