// shallowReactive 和 reactive
const reactiveHandler = {
get(target, prop) {
console.log('拦截器 get..........', prop)
return Reflect.get(target, prop)
},
set(target, prop, value) {
console.log('拦截器 set..........', prop, value)
return Reflect.set(target, prop, value)
},
deleteProperty (target, prop) {
console.log('拦截器 deleteProperty..........', prop)
return Reflect.deleteProperty(target, prop)
}
}
const shallowReactive = (target) => {
if (target && typeof target === 'object') {
return new Proxy(target, reactiveHandler)
}
return target
}
const reactive = (target) => {
if (target && typeof target === 'object') {
if (Array.isArray(target)) {
target.forEach((item, index) => {
target[index] = reactive(item)
})
} else {
Object.keys(target).forEach(k => {
target[k] = reactive(target[k])
})
}
return new Proxy(target, reactiveHandler)
}
return target
}
const reactive = (target) => {
if (target && typeof target === 'object') {
for (let k in target) {
if (target.hasOwnProperty(k)) {
target[k] = reactive(target[k])
}
}
return new Proxy(target, reactiveHandler)
}
return target
}