vivo面试题更新 2026-08-05

为什么 Object.defineProperty 不能监听数组方法(如 a[i] = 1),Vue 作者如何重构使其能支持这些方法?

vivo前端/移动开发电子/半导体问题拆解技术原理JavaScriptVue

考察说明

考察对 Vue2 响应式原理的理解,包括 defineProperty 局限性与数组方法拦载实现

回答思路

  1. 准确说明 defineProperty 仅能拦截对已存在属性的读写,无法拦截新增索引
  2. 解释数组索引新增或赋值时不触发 setter 的深层原因
  3. 描述 Vue2 通过重写数组方法(push/pop/splice 等)实现拦截,而非监听索引
  4. 指出整体上仍需依赖 Vue.set 或 splice 处理新增元素,并说明边界场景
本题已收录答题指导

本题附完整参考答案与评分标准

登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。