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

原生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);

相关文章:

  • 深度学习入门(十三):加深网络
  • Linux Docker 安装oracle19c数据库教程
  • 【算法提升】牛牛冲钻五 最长无重复子数组 重排字符串 one_day
  • 热点数据的统计到应用
  • 【Sqoop基础】Sqoop定位:关系型数据库与Hadoop生态间的高效数据桥梁
  • RabbitMQ 集群与高可用方案设计(三)
  • 如何用AI设计LOGO,DeepSeek+豆包免费批量生成
  • 【图论 并集查找】P3671 [USACO17OPEN] Where‘s Bessie? S|普及+
  • CodeGeeX - AI编程助手
  • Java Swing 自定义JOptionPane
  • 【文本分类】KG-HTC 知识图谱提升分类准确率
  • 有铜半孔工艺的制造难点与工艺优化
  • 2025年绿色材料与制造技术国际学术会议(GMMT 2025)
  • 易境通WMS系统:赋能快消品海外仓高效管理
  • 《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》第三次印刷
  • leetcode617.合并二叉树:迭代法中层序遍历与队列操作的深度解析
  • 7.安卓逆向2-frida hook技术-介绍
  • Real2Render2Real:无需动力学仿真或机器人硬件即可扩展机器人数据
  • gin使用Mysql连接池用法
  • 【排错】kylinLinx环境python读json文件报错UTF-8 BOM
  • 做网站有自己的服务器吗/可以免费做网站推广的平台
  • 网站开发英文术语/seo优化搜索推广
  • 温州网站设计图片大全/seo关键词查询工具
  • 公司做网站推广/重庆seo顾问
  • 网站后台管理系统安装/自己建网页
  • js网站统计/免费的网站推广软件