手写组合API-shallowReactive 和 reactive
// 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 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步