javascript - 我可以创建一个可供所创建对象的每个属性使用的类方法吗?

标签 javascript object methods

我可以创建一个可供对象的每个属性使用的方法吗?

class myClass {
    constructor() {
        this.a = 1;
        this.b = 2;
        this.c = 3;
    }
    raise(x) {
        this += x;              //I know this doesn't work. I want the raise function to use 
                                //the value of its caller and increase it by x
    };
}

我想要实现的是能够通过

调用任何对象属性上的 raise 方法
obj1 = new myClass();

obj1.a.raise(1);            //a = 2
obj1.b.raise(3);            //b = 5
obj1.c.raise(100);          //c = 103

所以我希望能够使用以下语法:object.property.method()

我尝试在类构造函数、类原型(prototype)或对象原型(prototype)上创建 raise。我在其他地方也找不到任何提及这一点的信息。

最佳答案

obj.a 不可能返回一个数字,同时又能够调用 obj.a.raise 来修改它。

如果您愿意进行一些小调整,您可以通过类似于 .get 的方法检索该值,而基础值将存储在 _a属性:

class myClass {
  constructor() {
    this._a = 1;
    this.a = { raise: num => this._a += num, get: () => this._a };
  }
}
const obj = new myClass();

obj.a.raise(1);            //a = 2
console.log(obj.a.get());

关于javascript - 我可以创建一个可供所创建对象的每个属性使用的类方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60938600/

相关文章:

java - 扫描仪再次出现问题

Java,将字符串从一种方法传递到另一种方法

javascript - 渐进式 Web 应用程序 HTTPS 到 HTTP 请求

javascript - 通过 $emit 选择所有复选框不会重新渲染 View - Vuejs

java - 变量类名 Java

c++ - const_iterator 遍历引用的指针列表

object - Kotlin .add覆盖MutableList中的所有列表项

javascript - ES6 - 获取同一天的所有事件对象[相差小于或等于1天]

javascript - 带有播放列表的 html5 音频标签

java - 等效静态和非静态方法的速度差异很大