Vue-响应式数据
响应式数据
所谓的响应式数据就是如果内存中的数据变化了 页面UI也会动态跟着刷新 这种数据就是响应式数据
Vue实现响应数据的原理
vue2.0 采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应监听回调。当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。
vue3.0 --使用es6 proxy 代理了data对象
Vue实现响应式数据的源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | function MyVue(option){ let _myvm={} //劫持 let arr=Object.keys(option.data) for ( let i=0;i<arr.length;i++){ Object.defineProperty(_myvm,arr[i],{ set(v){ //劫持 option.data[arr[i]]=v //响应-刷新页面 let title=document.querySelector(option.el+ " #title" ) let msg=document.querySelector(option.el+ " #msg" ) title.innerHTML=_myvm[ "title" ] msg.innerHTML=_myvm[ "msg" ] }, get(){ return option.data[arr[i]] } }) _myvm[arr[i]]=option.data[arr[i]] } return _myvm } |
本文来自博客园,作者:前端小白银,转载请注明原文链接:https://www.cnblogs.com/forever-ljf/p/16659996.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!