初學(xué)Vue之雙向綁定

我決定每周都寫一點技術(shù)的博客,但是一開始真的不知道要寫什么。或許也是自己的水平?jīng)]有到能想到一個什么很有意思的話題去寫吧。
那么我初期的博客就圍繞著別人的博客,然后寫上自己的發(fā)散和筆記吧。

原文-面試題:你能寫一個Vue的雙向數(shù)據(jù)綁定嗎?
詳細(xì)版

文中說不對Vue中的雙向綁定的原理做過多解釋了,但是我好像根本就不怎么了解也。所以,第一部分還是自己總結(jié)一下雙向綁定的原理吧。

雙向綁定實現(xiàn)的原理

剛看了一遍別人的博客,腦袋有點暈。媽的。再理理。

實現(xiàn)的最基本的思路是做到數(shù)據(jù)的監(jiān)聽。數(shù)據(jù)的劫持,在MVVM框架中,做到data層和view層的數(shù)據(jù)劫持。對于view層數(shù)改動,是很容易監(jiān)聽的。畢竟JS中的監(jiān)聽器就是專門做這個的。重點在于數(shù)據(jù)層的更改怎么和view層的更新的。
這個地方用到的就是Object.definePropert()。這個方法接受三個參數(shù),第一個是目標(biāo)對象,第二個是對象的屬性名,第三個是針對該屬性的描述。

var Book = {}
var name = ''
Object.defineProperty(Book,'name',{
  set:function(value){name = value; console.log('you named a book  '+name)},
  get:function(){return '\<'+name+'\>'}
})
Book.name = 'yoyi'//you named a book  yoyi
Book.name  //"<yoyi>"

在描述里面就可以對set和get進(jìn)行監(jiān)聽,雙向綁定的最基本的思路就是這樣實現(xiàn)的。接下來,怎么做的,繼續(xù)看吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容