1、isProxy
作用:判斷當前數據是否為代理數據。
注意:它只對通過 reactive,readonly,shallowReactive,shallowReadonly 這四個方法包裹的數據返回true,對于 ref 以及通過 new Proxy 代理的數據返回都是false。
2、isReactive
作用:判斷當前數據是否reactive包裹的數據。
注意:只對 reactive,shallowReactive 包裹的數據為true,其他為false。
3、isReadonly
作用:判斷數據是否為readonly包裹的數據。
注意:只對 readonly,shallowReadonly 包裹的數據返回true,其他為false。
4、注意
如果 readonly 包裹的是一個 reactive 數據的話,那么 isReadonly, isReactive 都為true。
但是如果 reactive 包裹的是一個 readonly 的數據的話,那么 isReadonly 為true,isReactive 為false。
原因是:readonly 包裹的數據是一個只讀的數據,不能在通過reactive方法進行代理。可以查看這兩的數據。
readonlyObj
reactiveObj
可以看出 readonlyObj 被代理的2次,而 reactiveObj 被代理1次。所以 reactive(readonly(obj)) 這種只會被人 readonly 代理,不會再被 reactive 代理了。