關於defineProperty的一點理解

以前有了解過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。

})

相關文章
相關標籤/搜索