js 数据响应式(一)之Proxy(代理)

    技术2026-04-12  5

    js 数据响应式 Proxy(代理

    首先什么是数据响应式 :就是当你对数据进行操作的时候,给你一个反馈信息,你可以捕捉到这个数据进行了变更或者其它操作 ,呢么我们就需要一个 Proxy (代理)

    什么是Proxy ?

    Proxy: 也就是代理,可以帮助我们完成很多事情,例如对数据的处理,对构造函数的处理,对数据的验证,说白了,就是在我们访问对象前添加了一层拦截,可以过滤很多操作,而这些过滤,由你来定义。 原文:mozilla 的官方定义: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy

    老规矩先上例子

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>proxy</title> </head> <style type="text/css"> .abc{ height: 300px; background:red; } </style> <body> <div class="abc"> </div> <input type="button" name="" id="button" value="获取参数" style="margin-left: 50%" onclick="click_button()"> </body> <script > var b =document.querySelector('.abc'); //获取abc这个对象 var data1= { //创建一个 对象1 name: 'lili', age : '18' } var data2= { //创建一个 对象2 name: 'huahua', age : '19' } b.innerHTML = data1.age //给这个abc对象上展示 data1 的age属性 var p = new Proxy(data1,{ //创建 一个Proxy(代理) 第一个是参数是:对象,第二个参数是函数 set(target,prop,newvalue) //set 属性设置操作的捕捉器。 (对象,属性,新值) { console.log('set...',target,prop,newvalue,"数据在这个时候被更改了") b.innerHTML = newvalue return Reflect.set(target,prop,newvalue); //返回 data1 } }); var p1 = new Proxy(data2,{ get(target,prop) // get 属性读取操作的捕捉器 { console.log('get...',target,prop,"数据在这个时候被获取了") return Reflect.get(...arguments); } }); window.onload = function xiug(argument) { //页面初始化的时候加载 这个函数 setTimeout(function(){ p.age = 21; },1000) setTimeout(function(){ p.name = "xiaoming"; },2000) setTimeout(function(){ console.log(p.name) console.log(p.age) },3000) } function click_button(argument) { console.log(p1.name) } </script> </html>

    在我们不确定什么时候数据被改变的时候想要刷新界面?改变链接?改变对象? 就用Proxy代理,可以截取. 未完后期有时间再完善,学东西一定要自己动手实践一下,才能吃进去

    Processed: 0.024, SQL: 9