Vue實現雙向資料繫結的原理

2021-10-04 02:48:56 字數 1052 閱讀 9087

vue實現雙向資料繫結的原理就是利用了 object.defineproperty(),這個方法通過重新定義物件,獲取屬性值(get)和設定屬性值(set)的操作來實現。

object.defineproperty() 方法會直接在乙個物件上定義乙個新屬性,或者修改乙個物件的現有屬性, 並返回這個物件。

object.defineproperty()方法有三個引數:

obj 要修改或定義key值的物件

key 對應obj物件的裡面某有已有或要修改的屬性

options 這個引數物件裡面有get,set兩個函式,用來定義屬性值

簡單的實現

同步輸出

<

!doctype html>

"en"

>

"utf-8"

>

"viewport" content=

"width=device-width, initial-scale=1.0"

>

"x-ua-compatible" content=

"ie=edge"

>

document<

/title>

<

/head>

>

"text" id=

"a">

"b">

<

/span>

<

/div>

<

/body>

var obj =

;var val =

"she"

; object.

defineproperty

(obj,

'val',,

set:

function

(newval)})

; document.

addeventlistener

('keyup'

,function

(e))

<

/script>

<

/html>

vue實現資料雙向繫結原理

vue實現資料雙向繫結主要是採用資料劫持結合發布者 訂閱者的模式的方式來實現。通過object.defineproperty 的get和set來劫持每個屬性,在資料發生變化時通過發布者發訊息給訂閱者,觸發相應的監聽回掉。具體就是先把說有的資料做乙個資料劫持。第一先修改資料,在input框輸入值的時候...

vue資料雙向繫結的實現原理

object.defineproperty?var model object.defineproperty model,txt console.log model.txt hello word defineproperty是es5的特性,該方法允許精確新增或修改物件的屬性。通過賦值操作新增的普通屬性...

vue雙向繫結實現原理

當我們學會使用乙個東西的時候,就開始想要去知道這個東西是怎麼實現的,這個也是我們一直繼續 下去的動力,博主學了vue的時間也比較長了,自己也寫了乙個demo,還在不定時更新,有興趣的小夥伴可以去看看,如果這個專案能讓您有所收穫,那也是博主希望看到的,接下來也是聊聊自己開始學習vue一些實現原理的過程...