以前有了解過vue的雙向綁定,就是經過defineProperty來實現的。如今咱們稍微從新鞏固一下。vue
var data = {函數
name:"lxy"
},
data2 = {};雙向綁定
Object.defineProperty(data,'name',{ //defineProperty能夠接受三個參數 第一個目標對象,第二個目標鍵,第三個將被定義或修改的屬性的描述符。對象
set: function (){ //能夠接受一個參數就是新的值ip
console.log("data.name的值發生改變了!");get
},it
get: function (){
console.log("正在讀取data.name的值!");io
}console
})table
data.name //正在讀取data.name的值! undefined(這是否是說明使用這個方法以後對象被重置了?還在研究...)
data.name = 1 //data.name的值發生改變了!
Object.defineProperty( data2,'name',{
value: 2 , //賦值操做
//相似的操做還有:
// configurable當且僅當該屬性的 configurable 爲 true 時,該屬性描述符纔可以被改變,也可以被刪除。默認爲 false。
//enumerable當且僅當該屬性的 enumerable 爲 true 時,該屬性纔可以出如今對象的枚舉屬性中。默認爲 false。
//數據描述符同時具備如下可選鍵值:value該屬性對應的值。能夠是任何有效的 JavaScript 值(數值,對象,函數等)。默認爲 undefined。這也就是爲何writable 當且僅當該屬性的 writable 爲 true 時,該屬性才能被賦值運算符改變。默認爲 false。
})