JS对象中的访问器属性

// 访问器属性不能直接定义 它包含的是一对get和set方法
// 四个特性 Configurable 默认是false Enumerable 默认也是false
// get 读取访问器属性会触发get方法 修改定义访问器属性会触发set方法
var obj={
    _year:2000,// _year表示obj对象的私有属性
    editor:1
}
// 访问器属性 year属性是我们的访问器属性
Object.defineProperty(obj,'year',{
    // 表示访问器属性可以被读取 不可以被写入
    get:function(){
        return this._year
    },
    // 表示访问器属性可以被写入
    // newYear --2001
    set:function(newYear){
        if(newYear!=this._year){
            this._year=newYear;
            this.editor++
        }
    }
});
// obj.year=2001;无效
console.log(obj.year,'读取访问器属性');
obj.year=2001;
console.log(obj.year,'访问器属性');
console.log(obj._year,'修改之后的私有属性');
console.log(obj.editor,'修改后的editor');
console.log(Object.getOwnPropertyDescriptors(obj));
console.log(obj);

输出结果:

2000 读取访问器属性
2001 访问器属性
2001 修改之后的私有属性
2 修改后的editor
{
  _year: { value: 2001, writable: true, enumerable: true, configurable: true },
  editor: { value: 2, writable: true, enumerable: true, configurable: true },
  year: {
    get: [Function: get],
    set: [Function: set],
    enumerable: false,
    configurable: false
  }
}
{ _year: 2001, editor: 2 } 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值