面试经常提问vue双向数据绑定的原理,其主要是依赖于Object.definePropety();
Object.definePropety下面有get和set方法。
get指读取属性时调用的放法,set是写入属性时调用的方法。
举个例子:
var book={
_year = 2004,
edition:1
};
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.