JS中的getter和setter

对象有两种属性:(1)数据属性,就是我们经常使用的属性(2)访问器属性,也称存取器属性

存取器属性就是一组获取和设置值的函数。getter负责获取值,它不带任何参数。setter负责设置值,在它的函数体中,一切的return都是无效的。

var o = {
  get val(){
    /*函数体*/
    return ;
  },
  set val(n){
    /*函数体*/
  }
}

 

在对象内如果设置了存取器属性,如果某一变量只声明了getter方法,那么它仅仅只可读而不可写。如果只声明了setter方法,那么读到的该变量值永远都是undefined。

//只声明getter方法时不能通过getter方法来改变变量值
var obj = {
  a: 3,
  b: 8,
  get val() {
    return this.a;
  }
}

console.log(obj.val);     //3
obj.val= 100;
console.log(obj.val); //3

//只声明setter方法时不能获取变量的值
var obj = {
  a: 3,
  b: 8,
  set val(n) {
    this.a = n;
  }
}
console.log(obj.val);     //undefined
obj.val= 100;
console.log(obj.val); //undefined
console.log(obj.b);  //8   其他变量不受影响

//同时声明两种方法
var obj = {
  a: 3,
  b: 8,
  get val(){
    return this.a;
  },
  set val(n) {
    this.a = n;
  }
}
console.log(obj.val);     //3
obj.val= 100;
console.log(obj.val); //100

setter和getter方法在定义时并未用function关键字

详细可以参考:https://www.cnblogs.com/zhuzhenwei918/p/6025077.html

转载于:https://www.cnblogs.com/wenxuehai/p/10333987.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值