【发布时间】:2020-04-03 17:59:07
【问题描述】:
在 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”为前缀。但这似乎微不足道;人们甚至可能将其视为一种好处,因为它迫使开发人员了解类成员各自的可见性。
这有我没有看到的缺点吗?我们可以在构造函数之外定义公共方法,但我们是否愿意这样做?鉴于必须在构造函数内部定义公共字段,是否有某些原因必须在其外部定义公共方法?
【问题讨论】: