setter如何在Javascript中工作?

时间:2018-04-13 03:33:53

标签: javascript object getter-setter

具体来说,它与Codecadamy示例有何关系?

let person = {
  _name: 'Lu Xun',
  _age: 137,
  set age(ageIn) {
    if (typeof ageIn === 'number') {
      this._age = ageIn;
    }
    else {
      console.log('Invalid input');
      return 'Invalid input';
    }
  }

};

对我来说,为什么他们把ageIn放在age()里面是没有意义的,它做了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

setter是一个在您尝试更改参数时执行的函数。

set age(ageIn)

在上面的setter函数中,他们试图在将它分配给对象的_age属性之前,确定它们试图设置的参数是否为数字。仅当用户将值设置为person.age = 140并且将person._age更新为140时,才会调用此方法。

但是,如果用户尝试直接更新_age属性,则不会执行此方法并直接更新person._age

这是一个有用的资源,可以更多地了解setter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set

希望这会有所帮助。快乐的编码