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 不提供这样的功能。
当声明一个 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 不提供这样的功能。