字节跳动面试题更新 2026-08-05

为什么 Object.defineProperty 无法监听数组的 push 方法?Vue 2 是如何解决这个问题的?

美团字节跳动前端/移动开发互联网/IT技术原理问题排查Vue

考察说明

考察对数组响应式缺陷的深入理解和 Vue 2 的补丁方案

回答思路

  1. 说明 Object.defineProperty 只能拦截属性访问和赋值,无法拦截数组方法调用
  2. 指出 Vue 2 通过重写数组原型方法(push/pop/shift/unshift/splice/sort/reverse)实现拦截
  3. 解释重写方法内部会触发依赖更新,从而确保响应式
  4. 提及对数组索引和 length 修改的限制
本题已收录答题指导

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

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