JS中的getter與setter

1、什麼是getter和setter

  • getter 是一種得到屬性值的方法,setter是一種設置屬性值的方法
  • getter負責查詢值,它不帶任何參數,setter則負責設置鍵值,值是以參數的形式傳遞,在他的函數體中,一切的return都是無效的
  • get/set訪問器不是對象的屬性,而是屬性的特性,特性只有內部才用,所以在javaScript中不能直接訪問他們,爲了表示特性是內部值用兩隊中括號括起來表示如[[Value]]
  • 對象的屬性又可分爲對象屬性和訪問器屬性(參考資料: https://www.cnblogs.com/absolute-child/p/7188417.html

2、使用方式

2.1 set/get

var person = {
    _name: '',
    get name() { return this._name },
    set name(n) { this._name = n }
}
 
// 測試
person.name // 輸出 --> ''
person.name = 'Zhangsan'
person.name // 輸出 --> Zhangsan

2.2 Object.defineProperty

var person = function() {
    var _name = ' ';
    var obj = {};
    Object.defineProperty(obj, 'name', {
        configurable: true,
        enumerable: true,
        get: function() {
            return _name;
        },
        set: function(n) {
            _name = n;
        }
    })
    return obj;
}();
person.name = "Zhangsan";
person.name // 輸出 --> Zhangsan
相關文章
相關標籤/搜索