getter和setter以及defineProperty的用法

getter 和 setter 和 defineProperty

  • getter:將對象屬性綁定到查詢該屬性時將被調用的函數
    • 說人話就是,當你調用一個getter屬性時會調用定義好的get函數,這個函數會返回一些運算結果的值(通常是用其餘屬性做爲運算值),這個值就做爲你調用的這個屬性的值。
  • setter: 當嘗試設置屬性時,set語法將對象屬性綁定到要調用的函數
    • 說人話就是,當你設置一個setter屬性的值時會調用定義好的set函數(能夠傳入參數),這個函數會將這個對象的其餘屬性設置爲傳入的參數計算事後的值。
  1. 使用defineProperty在現有對象上定義getter:

要隨時將getter添加到現有對象上,使用Object.defineProperty()函數

const o = { a:0 }
    Object.defineProperty(o, 'b', { get: function() {return this.a + 1}});
    console.log(o.b) // Runs the getter, which yields a + 1(which is 1)

  1. 使用defineProperty爲當前對象定義setter
const o = { a: 0 }
    Object.defineProperty(o, 'b', {set: function(x) { this.a = x/2; }});
    o.b = 10; // Runs the setter, which assigns 10 / 2 (5) to the 'a' property
    console.log (o.a) // 5
相關文章
相關標籤/搜索