面試常常提問vue雙向數據綁定的原理,其主要是依賴於Object.definePropety();vue
Object.definePropety下面有get和set方法。面試
get指讀取屬性時調用的放法,set是寫入屬性時調用的方法。this
舉個例子:get
var book={it
_year = 2004,io
edition:1function
};原理
Object.defineProperty(book,"year",{方法
get: function(){數據
return this._year;
},
set : function(newValue){
if (newValue > 2004){
this._year = newValue;
this.edition += newValue -2004;
}
}
});
book.year =2005;
alert(book.edition); //2
開始,當book.year=2005時,get獲取到this._year的值,而後傳值給set,保存新值,this.year=newValue=2005,this.edition=2。同理,將book.year改成2006,那麼edition的值應爲3,2014應爲1.