WeakMap & WeakSet

Why might this pattern be useful in a component system?
const store = new WeakMap();

class Component {
  constructor() {
    store.set(this, {
      state: {},
      listeners: new Set()
    });
  }
  
  setState(newState) {
    const data = store.get(this);
    data.state = { ...data.state, ...newState };
    data.listeners.forEach(listener => listener(data.state));
  }
}
Next Question (14/20)