对象 get和set方法

1、用途

用户定义的对象定义 getter 和 setter 以支持新增的属性。

示例:obj创建一个伪属性latest,它会返回log数组的最后一个元素。

var obj = {
  log: ['example','test'],
  get latest() {
    if (this.log.length == 0) return undefined;
    return this.log[this.log.length - 1];
  }
}
console.log(obj.latest); // "test".

2、使用defineProperty在现有对象上定义 getter

var o = { a:0 }

Object.defineProperty(o, "b", { get: function () { return this.a + 1; } });

console.log(o.b) // Runs the getter, which yields a + 1 (which is 1

3、实用技巧

使用getter和setter方法扩展 Date原型,为预定义好的Date类添加一个year的属性。定义属性year的getter和setter方法用到了Date类中已存在的getFullYear和setFullYear方法。

Object.defineProperty(Date.prototype, "year", {
                get: function() {
                    return this.getFullYear()
                },
                set: function(y) {
                    this.setFullYear(y)
                }
            });
            var now = new Date();
            console.log(now.year); // 2018
            now.year = 2001;
            console.log(now); //Tue Sep 11 2001 15:10:43 GMT+0800 (中国标准时间)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值