vue2 computed 如何查看Watcher实例的deps数组中的Dep实例具体代表什么data(现在只看到一个id)?

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

回到顶部