你是怎么理解Vue响应式原理的?

你是怎么理解Vue响应式原理的?,这是一道前端面试非常高频的Vue面试题,但是很多同学在面试时候只能说出个大概,老规矩,点赞收藏支持一下,给我一分钟,理想哥教大家该怎么满分回答这个问题

如果我是求职者,我会这么回答:

在vue2中,Vue的响应式原理是使用Object.defineProperty来实现的,使用defineProperty挨个对data中的属性实现监听,当数据变化后再去触发视图的更新。

但是Object.defineProperty有以下缺点

第一,对于复杂对象需要深度监听,一次性监听到底,计算量比较大

第二,对于对象的新增/删除属性的操作,无法监听,需要 Vue.$set、Vue.$delete辅助

第三,需要重写数组原生方法实现数组监听

鉴于以上缺点,所以,vue3中,改成了使用proxy来实现,相比defineProperty,proxy有以下优势:

第一,Proxy 可以直接监听对象而非属性,不需要再使用$set和$delete辅助更新

第二,Proxy 可以直接监听数组的变化,不需要再去重写数组原生方法。

第三,Proxy 有多达 13 种拦截方法,不限于 apply、deleteProperty、has 等等,这是 Object.defineProperty 不具备的;

第四,Proxy 返回的是一个新对象,我们可以只操作新的对象达到目的,而 Object.defineProperty 只能遍历对象属性直接修改;

第五,Proxy 作为新标准将受到浏览器厂商重点持续的性能优化,也就是传说中的新标准的性能红利;

以上就是这个问题的回答了,大家可以下次面试时试试这么回答看看效果。

最后,关于关注理想哥,每天学点前端面试小技巧。

#23届找工作求助阵地##24届软开秋招面试经验大赏##前端爆了#
全部评论
watcher?dep?
点赞 回复 分享
发布于 05-29 20:16 河南

相关推荐

08-12 15:03
已编辑
阿里巴巴集团_高级工程师
简历投递:cuzz.lb艾特alibaba-inc.com负责Lazada商家端的业务开发、架构优化和新技术的预研工作。在这里你不仅有机会了解阿里商品、交易、会员、营销等核心平台,而且有机会接受极具前瞻性的海外电商业务的挑战,并且需要针对多国场景进行业务抽象和平台剥离,任务的新颖性和挑战性都是前所未有的。只要你自信,有能力、有激情,一定可以找到吸引自己的新挑战。加入Lazada技术部,和我们一起参与阿里电商国际化,激荡东南亚市场的历程,和我们一起共创阿里国际化的未来!0. 年假7天以上,macbookpro+4k显示器,上班不用打卡,上班时间10左右到就行,没事6点就可以下班,每天50餐补,10块夜宵,1200打车补贴,除去周末每周一天在家灵活办公,待遇好,不卷,老板nice。1.本科及以上学历,计算机或相关专业;2.要求3年以上开发经验,扎实的JAVA基础,掌握JVM、并发编程、网络编程等基础知识;熟悉单元测试、WEB开发、数据库等基础技术。3. 熟悉Spring、SpringMVC、iBatis或其他主流开发框架;掌握常用数据结构、常见设计模式,拥有领域模型抽象能力。4. 具备大型网站核心开发、设计经验者优先;熟悉分布式系统设计、SOA、消息队列、缓存等技术者优先。5. 有强烈的技术热情和钻研精神,热爱新技术;有独立、主动的学习习惯和良好的沟通表达、团队协作能力。6. 具备较强的业务理解及业务抽象能力,能够快速从业务需求中找到技术设计的场景,有较强的业务sence.7. 精通常用软件架构模式,熟悉各种算法与数据结构,多线程,网络编程(Socket、http/web service)等;同学沟通交流,一起协同工作。8. 个性乐观开朗,好奇心强,逻辑思维强,善于团队合作;
投递阿里国际数字商业集团等公司10个岗位
点赞 评论 收藏
分享
2 9 评论
分享
牛客网
牛客企业服务