类本身的 Javascript Getters 和 Setters

标签 javascript class setter getter self

在声明 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/

相关文章:

javascript - 在 OpenLayers map 中更改投影

javascript - `class Popup extends DivOverlay<LeafletElement, Props>` 语法在 JavaScript 中意味着什么?

java - 此代码运行是否需要 getter 和 setter?

symfony - 多对多关系 setter

javascript - 作为函数的 ES6 类 setter

javascript - json_encode 返回我无法在 jQuery AJAX 调用中解析的结果

JavaScript 表单验证

javascript - 我们如何向古腾堡的 editor.BlockListBlock 添加自定义数据属性?

c++ - 为二维 vector 类创建标量乘法运算符

c++ - 如何在类中将 char 作为函数参数传递?