前端/移动开发面试题更新 2026-08-05

在 Vue 中,能够触发数组变化侦听的方法具体有哪些?这些方法为何能够被 Vue 侦测到相应的变化?

前端/移动开发技术原理Vue

考察说明

考查对 Vue 响应式系统中数组方法拦截机制的理解。

回答思路

  1. 【回答框架 1】能够被侦听的数组方法包括 push、pop、shift、unshift、splice、sort、reverse 这七个会修改原数组的方法。Vue 2 通过重写这些方法使得数组调用时能触发更新。
  2. 【回答框架 2】Vue 2 的响应式系统在初始化 data 时,对数组的每个元素进行 observe,并改写数组的原型链,将上述七个方法替换为经过拦截的版本,在调用原方法后手动触发依赖更新。
  3. 【回答框架 3】Vue 3 基于 Proxy,代理整个数组对象,对类似 set、deleteProperty 以及所有数组方法都有拦截,因此在 Vue 3 中直接通过索引修改元素或修改 length 也能被侦测,不再局限于上述七种方法。
  4. 【回答框架 4】开发者需要关注的是,Vue 2 中通过索引直接赋值或修改 length 无法触发更新,应使用 Vue.set 或重写后的方法;Vue 3 中利用 Proxy 则没有此限制。
  5. 【关键点 1】Vue 2 可侦听数组方法:push, pop, shift, unshift, splice, sort, reverse。
  6. 【关键点 2】原理是利用原型链重写,拦截方法并触发更新。
  7. 【关键点 3】Vue 3 采用 Proxy,支持更全面的数组变化侦听。
  8. 【易错点 1】Vue 2 中直接通过索引修改数组元素不会触发更新,需使用 Vue.set 或重写方法。
  9. 【易错点 2】不要误以为所有数组方法都能被监听,例如 filter 返回新数组,不涉及原数组变化。