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

vue3-07模拟vue3的响应式原理Proxy (代理对象)与Reflect (反射对象)

1.实现原理

  1. 通过Proxy (代理对象): 拦截对象中任意属性的变化,包括: 性值的读写、性的添加、属性的删除。
  2. 通过Reflect (反射对象): 对源对象的属性进行操作。
new Proxy(data,{
// 拦截读取属性值
get (target, prop) (
return Reflect.get(target, prop)
// 拦截设置属性值或添加新属性
set (target, prop, value) 
return Reflect.set(target,prop, value)
//拦截删除属性
deleteProperty (target,prop) {
return Reflect.deleteProperty(target,prop)
proxy.name = 'tom'

2.模拟响应(proxy)

target->person

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue3响应式</title>
    <script>
        // 源对象
        let person = {
            name: "messi",
            age: 15,
        };
        const p = new Proxy(person, {
            // p读取
            get(target, propName) {
                console.log(`已经读取p上的${propName}`, 'target', target, 'propName', propName);
                return Reflect.get(target, propName)
            },
            // p修改与增加
            set(target, propName, value) {
                console.log(`已经修改p上的${propName}属性,更新页面`);
                return Reflect.set(target, propName, value)
            },
            // p删除
            deleteProperty(target, propName) {
                console.log(`已经删除p上的${propName}属性,更新页面`);
                // return delete target[propName];
                return Reflect.defineProperty(target, propName)
            }
        });
    </script>
</head>

<body>

</body>

</html>

对应操作响应式更改

相关文章:

  • NNP_test_cpp
  • 深度强化学习落地调参技巧
  • 企业之IT安全管控概览和实践案例
  • Docker下ARM64架构的源码编译Qt5.15.1,并移植到开发板上
  • 新版本的idea用不习惯,怎么还原为之前版本的UI界面?idea界面还原,idea新版本ui设置
  • 一文了解Java中的虚拟线程新特性
  • linux内核驱动:I2C子系统笔记
  • Android 10.0 Settings中系统菜单去掉备份二级菜单
  • 数据安全_笔记系列09_人工智能(AI)与机器学习(ML)在数据安全中的深度应用
  • Java数组学习
  • 初识JavaFX-IDEA中创建第一个JavaFX项目
  • mysql中的计算日期函数 理解、用法
  • 从0-1学习Mysql第六章: 缓存与性能优化
  • Windows提权之基本流程(二)
  • SIM盾构建安全底座的障碍
  • 穿越AI边界:深度集成DeepSeek API与云平台的实践之路
  • seacmsv9报错注入
  • Pytorch使用手册-使用Wav2Vec2进行强制对齐(专题二十五)
  • 排查和解决线程池瓶颈问题案例
  • 【Veristand】Veristand 预编写教程目录
  • 沙青青评《通勤梦魇》︱“人机组合”的通勤之路
  • 赖清德为“临阵脱逃”作准备,国台办:绝不会任“台独”祸首逍遥法外
  • 中国至越南河内国际道路运输线路正式开通
  • 宝通科技:与宇树合作已签约,四足机器人在工业场景落地是重点商业化项目
  • 彭丽媛同巴西总统夫人罗桑热拉参观中国国家大剧院
  • 人民币对美元即期汇率盘中创半年新高,离岸市场升破7.2