vue的響應式實現原理

2021-10-10 06:41:04 字數 812 閱讀 6333

vue2.0的雙向資料繫結主要實現方式就是: 發布訂閱 + 資料劫持

這裡來手寫乙個實現過程,

// 發布訂閱 + 資料劫持

// 訂閱器模型

let dep = , // 為何不是陣列? 深拷貝與淺拷貝,使用陣列需要key來進行查值

// 新增訂閱者

listen: function (key, fn) ,

// 發布訊息

trigger: function ()

// vue 原始碼寫法

for (let i = 0, fn; fn = fns[i++];)

}}// 資料劫持

let datahijack = function () ,

set: function (newvalue)

});dep.listen(tag, function (text) );

}

將js引入html中,

可訂閱檢視1

可訂閱檢視2

開啟瀏覽器console面板,鍵入 dataobj.one = "路飛"; dataobj.two = "索隆"; 就可以看到頁面發生的變化了。

這裡說一下我遇到的問題,uncaught typeerror: object.defineproperty called on non-object

報錯原因是,給object.defineproperty傳參的資料型別不對,

最後在html裡面,發現dataobj定義的是字串,而不是物件,這裡是需要乙個物件型別的。

vue響應式布局 Vue 響應式原理

vue2 的資料偵測 在 src observer 目錄裡面,元件例項在初始化時,會呼叫 observe 函式處理 data function initdata vm observe 改寫了所有物件屬性的 getter setter 和陣列原型上的 7 個會改寫陣列方法,從而讓 data 變成可響應...

vue響應式原理

響應式系統是vue框架核心的部分,資料物件僅僅是普通的 js物件。當我們改變資料時,檢視也會被改變,本文就來 一下vue 的響應式原理。vue響應式的核心是使用了es5 新增的api object.defineproperty 因此vue不支援ie8 object.defineproperty的作用...

vue響應式原理

要了解響應式原理首先應該知道什麼是響應式 更改 vue的響應式原理是什麼 vue資料的雙向繫結是通過資料劫持結合發布訂閱模式,偵測到資料變化,然後通過object.defineproperty 物件對每個屬性的getter和setter進行劫持。當讀取 data 中的資料時自動呼叫 get 方法,當...