造成这个现象的原因是 `Object.assign` 修改了 `person` 的属性,触发了组件更新,从编译完成后的代码我们可以看出,template 最终被编译成了 `render function`,其中引用了 `person.aa`,也就是说 `render function` 会被收集为 `person.aa` 的依赖 当 `Object.assign(person,{aa:"121231",bb:12131})` 被执行,也就意味着 `render function` 会被重新执行,但这里很重要的一点是,vue的更新是异步的,状态变化驱动的更新会被合并到下一个 `nextTick` 执行 综上,这里的执行顺序其实是 1. `Object.assign(person,{aa:"121231",bb:12131})` 2. person = {aa:"hhh",bb:13} 3. `person = {aa:"hh",bb:132}` 4. ... 5. `render function`  这就是为什么步骤3中 `person = {aa:"hh",bb:132}` 能影响渲染结果,但重新赋值也导致其丢掉了响应性