WeakRef polyfill

HTML

<button onclick="checkOriginalObject()">
Check original object
</button><br>
<button onclick="checkWeakRef()">
Check weak reference
</button><br>
<button onclick="deleteOriginalObject()">
Delete original object
</button>

JavaScript

const WeakRefPolyFill = (function (wm) {
  function WeakRefPolyFill(target) {
    wm.set(this, target);
  }

  WeakRefPolyFill.prototype.deref = function () {
    return wm.get(this);
  };

  return WeakRefPolyFill;
})(new WeakMap());

let originalObject = {foo: "bar"}
let weakRef = new WeakRefPolyFill(originalObject)

function checkOriginalObject() {
	console.log(originalObject)
}

function checkWeakRef() {
	console.log(weakRef.deref())
}

function deleteOriginalObject() {
	originalObject = undefined
}