Proxy&Reflect(vue3.0响应式数据劫持原理)

let arr = [1,2,3]

let proxy = new Proxy(arr,{
    // 获取值时触发
    get(target,key,receiver){
        console.log('获取值');
        // Reflect和Proxy都是成对出现的 (Reflect一般被叫做反射)
        // const res = Reflect.get(target,key,receiver) 这句话其实就相当于 target[key]
        // 参数receiver 没有用到也可以把它传进去 没有影响 
        const res = Reflect.get(target,key,receiver)
        console.log(res);
        return res
    },
    // 获取值时触发
    set(target,key,value,receiver){
        console.log('设置值');
        // 当是设置值时 Reflect.set(target,key,value,receiver) 相当于 target[key] = value
        // 返回值是true或者false代表设置成功或者失败
        const res = Reflect.set(target,key,value,receiver)
        console.log(res);
        return res
    }
})

proxy[0] // 获取值  1
proxy[0] = 100 // 设置值 true
上一篇:golang 11. pair reflect struct_tag json


下一篇:golang的reflect