首页 > Web开发 > 详细

深入浅出Vue.js(四) 整体流程

时间:2020-06-23 11:55:29      阅读:68      评论:0      收藏:0      [点我收藏+]

整体流程

vm.$set(target,key,val)

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
}

vm.$delete(target,key)

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()
}

  

 

 

 未完待续...

深入浅出Vue.js(四) 整体流程

原文:https://www.cnblogs.com/zhenjianyu/p/13175996.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!