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