關於Object.defineProperty的get和set

面試常常提問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.

相關文章
相關標籤/搜索