Open zxsby opened 3 years ago
✨核心点考察的是:数组和对象类型当值变化时如何劫持到。
对象内部通过defineReactive方法,使用Object.defineProperty将属性进行劫持(只劫持已存在的属性)。
Object.defineProperty
只劫持已存在的属性
数组则通过重写数组方法'push','shift','unshift','pop','reverse','sort','splice'来实现
'push','shift','unshift','pop','reverse','sort','splice'
这里在回答时可以带出一些相关知识点(比如多层对象是通过递归来实现劫持,顺带提出Vue3中是使用proxy来实现响应式数据)
proxy
✨核心点答出来了也可以再进行补充回答,内部依赖收集是怎样做到的。
dep属性
依赖的watcher
watcher去更新
(对象/数组)
✨这里可以引出性能优化相关的内容
请说一下响应式数据的理解?
✨核心点考察的是:数组和对象类型当值变化时如何劫持到。
对象内部通过defineReactive方法,使用
Object.defineProperty
将属性进行劫持(只劫持已存在的属性
)。数组则通过重写数组方法
'push','shift','unshift','pop','reverse','sort','splice'
来实现这里在回答时可以带出一些相关知识点(比如多层对象是通过递归来实现劫持,顺带提出Vue3中是使用
proxy
来实现响应式数据)✨核心点答出来了也可以再进行补充回答,内部依赖收集是怎样做到的。
dep属性
,存放他所依赖的watcher
,当属性变化后会通知自己对应的watcher去更新
(每个对象(对象/数组)
类型自己本身也拥有一个dep属性,这个在$set面试题中再进行讲解)✨这里可以引出性能优化相关的内容