Ecmascript 6 这是实现ES6私有类成员的一种方法吗?

Ecmascript 6 这是实现ES6私有类成员的一种方法吗?,ecmascript-6,es6-class,Ecmascript 6,Es6 Class,在ES6类中通常如何声明成员函数的问题上跳出框框,这不是实现私有成员和公共成员之间区别的有效方法吗 class IncrementedNumber { constructor(x) { const xPlus1 = x + 1; this.getDouble = () => 2 * xPlus1; this.getQuadruple = () => 2 * this.getDouble(); } } const x =

在ES6类中通常如何声明成员函数的问题上跳出框框,这不是实现私有成员和公共成员之间区别的有效方法吗

class IncrementedNumber {
    constructor(x) {
        const xPlus1 = x + 1;
        this.getDouble = () => 2 * xPlus1;
        this.getQuadruple = () => 2 * this.getDouble();
    }
}
const x = new IncrementedNumber(6);
console.log(x.getDouble());    // 2 * 7 -> 14
console.log(x.getQuadruple()); // 2 * (2 * 7) -> 28
该类的私有成员比作为其构造函数参数提供的数字大1。然后,该类提供了将数字翻倍或翻倍的公共操作

私有成员xPlus1是超级私有的,因为即使类成员位于构造函数之外也无法访问它。但是类方法可以在构造函数中定义,那么它有什么区别呢

我看到的一个松散的结果是,与公共成员相比,私有成员在访问时不加前缀“this”。但这似乎微不足道;人们甚至可能将其视为一种好处,因为它迫使开发人员意识到类成员各自的可视性

有没有我没有看到的缺点?我们可以在构造函数之外定义公共方法,但我们愿意这么做吗?既然必须在构造函数内部定义公共字段,那么有什么理由必须在构造函数外部定义公共方法吗

有没有我没有看到的缺点

除此之外,是的,它通过闭包范围正确地实现了隐私,并且有时用于此