As of ECMAScript 2022, JavaScript supports private fields and methods, which are not accessible outside of the class definition. This is done by prefixing the field or method name with #
.
class Counter {
#count = 0;
increment() {
this.#count++;
console.log(this.#count);
}
getCount() {
return this.#count;
}
}
const counter = new Counter();
counter.increment(); // Output: 1
console.log(counter.getCount()); // Output: 1
console.log(counter.#count); // Error: Private field '#count' must be declared in an enclosing class