Vue源码解析之数据响应系统的使用(15)

const ob = (target: any).__ob__
if (target._isVue || (ob && ob.vmCount)) {
  process.env.NODE_ENV !== 'production' && warn(
   'Avoid deleting properties on a Vue instance or its root $data ' +
   '- just set it to null.'
  )
  return
}

这一段if判断也是一样的,如果target是Vue实例或者是根数据对象,在非生产环境下打印警告信息。也就是不能删除Vue实例对象的属性,也不能删除根数据对象的属性,因为data本身不是响应式的。

if (!hasOwn(target, key)) {
  return
}

如果target对象上没有key属性,直接返回。

delete target[key]

进行到这里就说明target是一个纯对象,并且有key属性,直接删除该属性。

if (!ob) {
  return
}

如果ob对象不存在,说明target不是响应式的,直接返回。

ob.dep.notify()

如果ob对象存在,说明target是响应式的,触发响应。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持黑区网络。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/19.html