在标准ES6类中添加getter方法有意义吗

Is there a point to adding getter methods in standard ES 6 classes?

本文关键字:getter 方法 有意义 添加 标准 ES6      更新时间:2023-09-26

我发现自己下意识地做这样的事情,因为我通常写PHP。

class Car {
    constructor(engine) {
        this.engine = engine;
    }
    getEngine() {
        return this.engine;
    }
}

但直到最近,我才意识到这样做可能没有真正的实际意义,因为无论如何,javascript中都没有访问修饰符;换句话说,不妨使用car.engine而不是car.getEngine()

后续

如果有一点;你(单元)会测试getter方法吗(如果是,如何测试),为什么/为什么不测试?

不,像getEngine这样的方法是不必要的混乱。只需直接访问您的属性,例如car.engine。在JavaScript中,所有属性都是公开的,这是有原因的。

如果您需要向getter方法添加逻辑,或者重构类以使engine不再可直接访问,您仍然可以(并且应该)只使用透明的getter属性:

class Car {
    constructor(engine) {
        this._engine = engine;
    }
    get engine() {
        return this._engine; // or anything else
    }
}