js中的getter和setter

// 在Es5中可以使用getter和setter部分改写默认操作,
  // 但是只能应用在单个属性上,无法应用在整个对象上。
  // getter是一个隐藏函数,会在获取属性值时调用。
  // setter也是一个隐藏函数,会在设置属性值时调用。
  // 创建 getter 和 setter 有三种不同的方式:
  // 默认的句法(getter 和 setter 方法)
  // 使用 get 和 set 关键字
  // 使用 Object.defineProperty() 方法
 // 对象有两种属性:
  //(1)数据属性,就是我们经常使用的属性
  //(2)访问器属性,也称存取器属性
  // 存取器属性就是一组获取和设置值的函数。
  // getter负责获取值,它不带任何参数。
  // setter负责设置值,在它的函数体中,一切的return都是无效的。
  var o = {
    get val() {
      // 函数体
      return;
    },
    set val(n) {
      // 函数体
    }
  }

    // 在对象内如果设置了存取器属性,
    // 如果某一变量只声明了getter方法,那么它仅仅只可读而不可写。
    // 如果只声明了setter方法,那么读到的该变量值永远都是undefined。
    // 原因:必须得先获取到值,才能对值进行操作;即先get后set
    // 只声明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
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值