开发者社区> 问答> 正文

Vue 框架怎么实现对象和数组的监听?

已解决

Vue 框架怎么实现对象和数组的监听?

展开
收起
pandacats 2019-12-10 11:20:15 2380 0
2 条回答
写回答
取消 提交回答
  • 采纳回答

    如果被问到 Vue 怎么实现数据双向绑定,大家肯定都会回答 通过 Object.defineProperty() 对数据进行劫持,但是 Object.defineProperty() 只能对属性进行数据劫持,不能对整个对象进行劫持,同理无法对数组进行劫持,但是我们在使用 Vue 框架中都知道,Vue 能检测到对象和数组(部分方法的操作)的变化,那它是怎么实现的呢?我们查看相关代码如下:

    /**

    • Observe a list of Array items.

    */

    observeArray (items: Array ) {

    for (let i = 0, l = items.length; i < l; i++) {
    
      observe(items[i])  // observe 功能为监测数据的变化
    
    }
    

    }

    /**

    • 对属性进行递归遍历

    */

    let childOb = !shallow && observe(val) // observe 功能为监测数据的变化

    复制代码通过以上 Vue 源码部分查看,我们就能知道 Vue 框架是通过遍历数组 和递归遍历对象,从而达到利用 Object.defineProperty() 也能对对象和数组(部分方法的操作)进行监听。

    2019-12-10 13:34:54
    赞同 展开评论 打赏
  • 强!

    deep 属性设置下

    2020-01-31 20:31:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Vue.js 在前端服务化上的探索与实践 立即下载
Vue.js在前端服务化上的实践与探索 立即下载
利用编译将 Vue 组件转成 React 组件 立即下载