vue2 computed 如何查看Watcher实例的deps数组中的Dep实例具体代表什么data(现在只看到一个id)?
回答:
data返回的对象中的对象类型可以通过它的__ob__属性看到
但是基本原始数据类型怎么看还不知道
研究一下data相关的源码
defineReactive
Observer
observe
initData
initState
发现原始数据类型的Dep实例好像是通过闭包获取的。。。
function defineReactive(obj, key, val, customSetter, shallow, mock) {
var **dep** = new Dep(); var property = Object.getOwnPropertyDescriptor(obj, key);
if (property && property.configurable === false) {
return;
}
// cater for pre-defined getter/setters
var getter = property && property.get;
var setter = property && property.set;
if ((!getter || setter) &&
(val === NO_INIITIAL_VALUE || arguments.length === 2)) {
val = obj[key];
}
var childOb = !shallow && observe(val, false, mock);
Object.defineProperty(obj, key, {
enumerable: true,
configurable: true,
get: function reactiveGetter() {
var value = getter ? getter.call(obj) : val;
if (Dep.target) {
{
**dep**.depend({
target: obj,
type: "get" /* TrackOpTypes.GET */,
key: key
});
}
if (childOb) {
childOb.dep.depend();
if (isArray(value)) {
dependArray(value);
}
}
}
return isRef(value) && !shallow ? value.value : value;
},
以上是 vue2 computed 如何查看Watcher实例的deps数组中的Dep实例具体代表什么data(现在只看到一个id)? 的全部内容, 来源链接: utcz.com/p/935095.html