getter&setter

198 阅读1分钟

getter

 get 将对象属性绑定到调用查询该对象属性时将调用的函数。

var obj = {
  log: ['a', 'b', 'c'],
  get latest() {
    if (this.log.length == 0) {
      return undefined;
    }
    return this.log[this.log.length - 1];
  }
}

console.log(obj.latest);
// expected output: "c"

注意

  • 使用时必须不带参数
  • 可以使用delete操作符删除getter
  • get 后的参数名可以是字符串或者计算属性名

    var expr = 'foo';
    
    var obj = {
      get [expr]() { return 'bar'; }
    };
    
    console.log(obj.foo); // "bar"

setter

set将对象属性绑定到要调用的函数

var language = {
  set current(name) {
    this.log.push(name);
  },
  log: []
}

language.current = 'EN';
language.current = 'FA';

console.log(language.log);
// expected output: Array ["EN", "FA"]
//在对象初始化时调用函数

注意

  • 可以赋值,相当于传参
  • 可以使用delete操作符删除setter
  • get 后的参数名可以是字符串或者计算属性名

getter与setter的区别

set用于赋值,get用于取值。