function set(target,key,val){
//有效的下标
if(Array.isArray(target) && isValidArrayIndex(key)){
target.length = Math.max(target.length,key)
target.splice(key,1,val)
return val
}
if(key in target && !(key in Object.prototype)){
target[key] = val
return val
}
const ob = target.__ob__
if(target.isVue || (ob && ob.vmCount)){
return val
}
if(!ob){
target[key] = val
return val
}
defineReactive(ob.value,key,val)
ob.dep.notify()
return val
}
function del(target,key){
if(Array.isArray(target) && isValidArrayIndex(key)){
target.splice(key,1)
return
}
const ob = target.__ob__
if(target.isVue || (ob && ob.vmCount)){
return
}
// 如果key不是target自身的属性,则终止程序继续执行
if(!hasOwn(target,key)){
return
}
delete target[key]
// 如果ob不存在(判断target是不是一个响应式数据),则直接终止程序
if(!ob){
return
}
ob.dep.notify()
}
未完待续...
原文:https://www.cnblogs.com/zhenjianyu/p/13175996.html