WeakMap & WeakSet

What is the main advantage of using WeakMap in this caching scenario?
const cache = new WeakMap();

class ExpensiveOperation {
  compute(obj) {
    let result = cache.get(obj);
    if (result === undefined) {
      result = /* expensive computation */;
      cache.set(obj, result);
    }
    return result;
  }
}
Next Question (4/20)