JS中的getter与setter

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

 

posted @ 2018-01-22 10:55  奔跑的蜗牛~  阅读(17432)  评论(0编辑  收藏  举报