在声明 js 类时,我们可以为该类的属性定义 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
我想知道的是,如何在类本身上定义 getter 和 setter? 例如 foo = 7 将触发一段代码,console.log(foo) 将打印“foo-bar”。
最佳答案
你不能。 foo =
表示您正在为变量 foo
赋值。您能做的最好的事情就是在创建类的实例时使用构造函数来运行一些代码。
class Foo{
constructor(){
console.log('A Foo instance has been created!');
}
get bar(){
return 'foo-bar';
}
set bar(n){
this.baz = n * 10;
}
}
每当一个值被破坏或超出范围并最终被垃圾收集器等清理时,某些语言也有一个析构函数
规范,但 es6 不提供这样的功能。
关于类本身的 Javascript Getters 和 Setters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600204/