05. Private Data

Approaches for managing private data for ES6 classes:

  1. Keeping private data in the environment of a class constructor

  2. Marking private properties via a naming convention (e.g. a prefixed underscore)

  3. Keeping private data in WeakMaps

  4. Using symbols as keys for private properties

Private data via constructor environments

class Countdown {
  constructor(counter, action) {
    Object.assign(this, {
      dec() {
        if (counter < 1) return;
        counter--;
        if (counter === 0) {
          action();
        }
      }
    });
  }
}

Private data via a naming convention

Private data via WeakMaps

Private data via symbols

Last updated

Was this helpful?