为什么 Object.defineProperty 不能监听数组方法(如 a[i] = 1),Vue 作者如何重构使其能支持这些方法?
考察说明
考察对 Vue2 响应式原理的理解,包括 defineProperty 局限性与数组方法拦载实现
回答思路
- 准确说明 defineProperty 仅能拦截对已存在属性的读写,无法拦截新增索引
- 解释数组索引新增或赋值时不触发 setter 的深层原因
- 描述 Vue2 通过重写数组方法(push/pop/splice 等)实现拦截,而非监听索引
- 指出整体上仍需依赖 Vue.set 或 splice 处理新增元素,并说明边界场景
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。