为什么 Object.defineProperty 无法监听数组的 push 方法?Vue 2 是如何解决这个问题的?
考察说明
考察对数组响应式缺陷的深入理解和 Vue 2 的补丁方案
回答思路
- 说明 Object.defineProperty 只能拦截属性访问和赋值,无法拦截数组方法调用
- 指出 Vue 2 通过重写数组原型方法(push/pop/shift/unshift/splice/sort/reverse)实现拦截
- 解释重写方法内部会触发依赖更新,从而确保响应式
- 提及对数组索引和 length 修改的限制
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。