Javascript class 本身的 Getters 和 Setters

Javascript Getters and Setters on class itself

当声明一个 js class 时,我们可以为 class 的属性定义 getter 和 setter,如下所示:

class Foo{

    get bar(){
        return 'foo-bar';
    }

    set bar(n){
        this.baz = n * 10;
    }

}

let foo = new Foo();

console.log(foo.bar) //foo-bar

foo.bar = 7;
console.log(foo.baz) //70

我想知道的是,如何在 class 本身 上定义 getter 和 setter? 因此,例如 foo = 7 将触发一段代码,而 console.log(foo) 将打印 'foo-bar'.

你不能。

foo = 7;

将把 foo 重新分配给 7

你不能。 foo = 表示您正在为变量 foo 赋值。您能做的最好的事情就是在创建 class 的实例时使用构造函数 运行 一些代码。

class Foo{

  constructor(){
    console.log('A Foo instance has been created!');
  }

  get bar(){
    return 'foo-bar';
  }

  set bar(n){
    this.baz = n * 10;
  }

}

一些语言也有一个 destructor 规范,每当一个值被销毁或超出范围并最终被垃圾收集器等清理时,但 es6 不提供这样的功能。