📜  JavaScript 属性访问器方法(1)

📅  最后修改于: 2023-12-03 15:01:43.095000             🧑  作者: Mango

JavaScript 属性访问器方法

在 JavaScript 中,属性访问器方法(Accessor Properties)提供了一种更复杂的对象属性访问方法,它由 getter 和 setter 两个方法组成,可以让开发者更加精细地控制对象属性的读写行为。

getter 方法

getter 方法用于获取对象属性的值。它是一个无参数的函数,它的返回值被当作属性的值。

const obj = {
  get prop() {
    return 'getter';
  }
};

console.log(obj.prop); // "getter"

在上面的例子中,我们定义了一个对象 obj,它有一个 getter 方法 prop,当我们访问 obj.prop 的时候,它会返回 'getter'

setter 方法

setter 方法用于设置对象属性的值。它接收一个参数,表示属性的新值。

const obj = {
  _prop: '',
  set prop(val) {
    this._prop = val;
  }
};

obj.prop = 'setter';

console.log(obj._prop); // "setter"

在上面的例子中,我们定义了一个对象 obj,它有一个 setter 方法 prop,当我们通过 obj.prop = 'setter' 来设置属性值的时候,实际上是调用了 setter 方法,该方法将新值 'setter' 赋值给了对象内部的 _prop 属性。

getter 和 setter 方法的组合

getter 和 setter 方法可以配合使用,让我们实现对属性读取和写入的精细控制。

const obj = {
  _age: null,
  get age() {
    return this._age;
  },
  set age(val) {
    if (val < 0) {
      throw new Error('Not a valid age!');
    }
    this._age = val;
  }
};

obj.age = 20;
console.log(obj.age); // 20

obj.age = -1; // Error: Not a valid age!

在上面的例子中,我们定义了一个 obj 对象,并且定义了一个 _age 属性来存储年龄,同时定义了一个 getter 方法 age 和一个 setter 方法 age。在 setter 方法中,我们限制了传入的值必须为正整数,否则会抛出一个错误。这样,我们就能实现对属性读取和写入的精细控制。

以上就是 JavaScript 属性访问器方法的介绍,希望对你有帮助!