当前位置: 首页 > ds >正文

原生js实现数据响应方法2.0

作用

实现类似vue的数据响应,改变其值去触发特定的回调

效果预览

在这里插入图片描述

代码

 function createReactive(target,parent = "",callback = (longKey, newValue, oldValue) => {console.log(`Property ${longKey} changed from`, oldValue, 'to', newValue, '🤓');}) {if (typeof target !== 'object' || target === null) {return target;}const handler = {get(target, key) {const longKey = parent.length ? `${parent}.${key}` : keyconst value = target[key];if (typeof value === 'object' && value !== null) {console.log('get');return createReactive(value, `${longKey}`, callback);}return value;},set(target, key, newValue) {const longKey = parent.length ? `${parent}.${key}` : keyif (target[key] !== newValue) {console.log(`Property ${longKey} changed from`, target[key], 'to', newValue);callback(longKey, newValue, target[key])target[key] = newValue;return true;} else {return false}}};return new Proxy(target, handler);}// 使用示例const config = {name: 'John',age: 30,address: {city: 'New York',street: '123 Main St'}};const core = new CoreClass(config);// 修改普通属性core._config.age = 31;// 修改嵌套属性Object.assign(core._config, {address: {city: 'New York11',street: '123 Main St111'}})console.log(core);
http://www.xdnf.cn/news/9155.html

相关文章:

  • 【Qt】未添加scrollArea造成界面过大
  • 【Webtrees 用户手册】第 3 章 -会员指南
  • 解锁集成电路制造新建项目的防震黑科技-江苏泊苏系统集成有限公司
  • ArcGIS Pro 3.4 二次开发 - 几何
  • Python爬虫实战:研究Beautiful Soup框架相关技术
  • 《软件工程》第 10 章 - 软件实现
  • Chrome浏览器隐私与安全功能完全指南
  • MySQL : MySQL的安装【CentOS 7】
  • uniapp在app端老是铺满全屏
  • CAD精简多段线顶点、优化、删除多余、重复顶点——CAD c#二次开发
  • uniapp 条件筛选
  • 编程日志5.20
  • 信息论基础理论与应用全面指南
  • 每天掌握一个Linux命令 - sysbench
  • 【图像大模型】Stable Diffusion XL:下一代文本到图像生成模型的技术突破与实践指南
  • python fastapi统一捕获请求和响应
  • 七段码--dfs+set去重/状压
  • python训练营第35天
  • Axure动态面板学习笔记
  • React整合【ECharts】教程004:饼图的构建和基本设置
  • MySQL增删改查基础教程:熟练掌握DML语句操作【MySQL系列】
  • leetcode98.验证二叉搜索树:递归法中序遍历的递增性验证之道
  • GitLab 18.0 正式发布,15.0 将不再受技术支持,须升级【一】
  • 数字孪生文旅,如何颠覆传统旅游体验?
  • 在 Unity 中,AOT和JIT的区别
  • Java集合操作常见错误及规避方法
  • 菜鸟之路Day33一一Mybatis入门
  • halcon 图像预处理
  • 线程安全问题的成因
  • [Java实战]Spring Boot整合达梦数据库连接池配置(三十四)