前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端每日一题(10.18题目+10.17答案)

前端每日一题(10.18题目+10.17答案)

作者头像
程序员法医
发布2022-12-20 21:25:06
1900
发布2022-12-20 21:25:06
举报
文章被收录于专栏:vue全家桶vue全家桶

前端猎手

哈喽,大家好

我是法医

快来和法医一起看看

今天的前端每日一题吧

10月18日~面试题:

10月17日~参考答案:

说一下在 Vue2.x 中如何检测数组的变化?

Vue2.x 中实现检测数组变化的方法,是将数组的常用方法进行了重写。Vue 将 data 中的数组进行了原型链重写,指向了自己定义的数组原型方法。这样当调用数组 api 时,可以通知依赖更新。如果数组中包含着引用类型,会对数组中的引用类型再次递归遍历进行监控。这样就实现了监测数组变化。

流程:

  1. 初始化传入 data 数据执行 initData
  2. 将数据进行观测 new Observer
  3. 将数组原型方法指向重写的原型
  4. 深度观察数组中的引用类型

有两种情况无法检测到数组的变化。

  • 当利用索引直接设置一个数组项时,例如 vm.items[indexOfItem] = newValue
  • 当修改数组的长度时,例如 vm.items.length = newLength

不过这两种场景都有对应的解决方案。

  • 利用索引设置数组项的替代方案
代码语言:javascript
复制
//使用该方法进行更新视图
vm.$set,Vue.set的一个别名
vm.$set(vm.items, indexOfItem, newValue)
  • 修改数组的长度的替代方案
代码语言:javascript
复制
//使用该方法进行更新视图
Array.prototype.splice
vm.items.splice(indexOfItem, 1, newValue)

每天都会有一道面试题,大家的积极参与和讨论,是我继续下去的动力,希望大家踊跃互动,共同进步!保持学习,每天进步一点点!

大家可以将自己的想法在评论区留言,答案我会在明天每日一题中公布!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端猎手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说一下在 Vue2.x 中如何检测数组的变化?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档