Vue data 中随意更改一个属性,视图都会被更新吗?

面试讨论了Vue.js中数据变化如何影响视图。Vue通过Object.defineProperty对data属性进行监听,仅当属性在template中使用时,通过Dep类收集并更新视图。文章以一个简单的demo为例,解析了Vue的代理、数据劫持和渲染过程,说明只有在模板中使用的属性才会触发视图更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试官:看过 Vue 的源码没?
候选者:看过。
面试官:那你说下 Vue data 中随意更改一个属性,视图都会被更新吗?
候选者:不会。
面试官:why?
候选者:如果该属性没有被用到 template 中,就没有必要去更新视图,频繁这样性能不好。
面试官:那 Vue 中是如何去实现该方案的?
候选者:在实例初始化过程中,利用Object.defineProperty对 data 中的属性进行数据监听,如果在 template 中被使用到的属性,就被 Dep 类收集起来,等到属性被更改时会调用notify更新视图。
面试官:那你怎么知道那些属性是在 template 被用到的呢?
候选者:WTF。。。这个倒不是很清楚,您能解释下吗?
面试官:OK,那我就简单解释下:
先写个简单的 demo,其中 data 中有 4 个属性a,b,c,d,在模板中被利用到的属性只有a,b。看看是不是只有a,b才会调用Dep收集起来呢?

new 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CRMEB定制开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值