Vue 数据响应式

对于如下代码:

const vm = new Vue({data:{n:0}})
  1. new Vue内部对data对象进行监听,即一旦修改n的值以后,的值会立马变成修改后的值,如果在页面显示n的值的话,n会显示出修改后的值。
  2. new Vue会用一个变量把当前n的值保存下来,假设这个变量叫做xxx
let n = data.n
  1. Object.defineProperty给data对象一个虚拟的属性(假设为n),通过getter/setter方法模拟对’n’的读写操作同时覆盖原来的值,这样就保存了原始的值且不会被修改,使得数据更加的安全,getter/setter方法是ES6的语法。
  2. new Vue对data对象设置代理:创建一个空对象const obj = {},通过Object.defineProperty给obj对象虚拟属性’n’,getter/setter方法返回了new Vue对data监听过的data.n,是我们需要获得或者设置的值。
  3. 即使没有给它取名为vm,但是只要new Vue之后就会产生代理对象,可以使用this访问
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue数据响应原理是通过结合数据劫持发布-订阅者模来实现的。Vue使用Object.defineProperty来劫持data中各个属性的setter和getter方法,并在数据变动时发布消息给订阅者,从而触发相应的监听回调。 具体来说,Vue会创建一个observe对象来对数据进行劫持,将数据对象的每个属性都转换为getter和setter。当数据发生变动时,setter会被调用,然后发布消息给订阅者,通知它们数据已经发生改变了。订阅者会触发相应的监听回调进行相应的更新操作。 在Vue中,每个组件实例都会对应一个watcher实例。当组件渲染过程中使用了数据属性时,watcher会将这些属性收集为依赖。当依赖项的setter被触发时,watcher会被通知,从而使其关联的组件重新渲染。这样就实现了数据响应更新。 总结起来,Vue数据响应原理是通过数据劫持和发布-订阅者模的结合来实现的,利用Object.defineProperty来劫持数据属性的setter和getter方法,然后通过发布-订阅者模来实现数据变动时的通知和更新操作。这种机制使得Vue能够实现高效的数据更新和视图渲染。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue响应原理](https://blog.csdn.net/dongqian911/article/details/116242827)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vue响应原理](https://blog.csdn.net/weixin_48181168/article/details/120158346)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值