Выход за пределы поля с точки зрения того, как функции-члены обычно объявляются в классах ES6, разве это не эффективный способ реализовать различие между закрытыми и публикуемыми c членами?
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 больше, чем число, указанное в качестве аргумента его конструктору. Затем класс предлагает публичные c операции для удвоения и четырехкратного увеличения числа.
Закрытый член xPlus1 superprivate , поскольку даже члены класса не могут получить к нему доступ - , если они l ie за пределами конструктора . Но методы класса могут быть определены внутри конструктора, так в чем же разница?
Единственный слабый конец, который я вижу, состоит в том, что закрытые члены, в отличие от публикуемых c членов, являются доступ без префикса "this". Но это кажется незначительным; Кто-то может даже посчитать это преимуществом, так как это заставляет разработчика осознавать видимость членов класса.
Есть ли недостатки этого, которых я не вижу? Мы можем определить методы publi c вне конструктора, но женаты ли мы на этом? Учитывая, что поля publi c должны быть определены внутри конструктора, есть ли какая-то причина, по которой методы publi c должны быть определены вне его?