当前位置: 首页 > 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);
http://www.dtcms.com/a/215140.html

相关文章:

  • 深度学习入门(十三):加深网络
  • 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
  • Linux三剑客之grep命令使用教程
  • PTA练习题
  • 区块链与Web3:如何有效保障个人数据安全
  • 深入解析操作系统内核与用户空间以及内核态与用户态转换
  • 华为OD机试_2025 B卷_返回矩阵中非1的元素个数(Python,100分)(附详细解题思路)
  • Python 实现简单OCR文本识别
  • jquery基础知识
  • 关于拓展模块NotificationStyle的demo运行时报错的问题
  • 如何清除浏览器启动hao点360
  • 攻防世界RE-reverse_re3