一、什么是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