using Jint.Native.Object; namespace Jint.Native; /// /// https://tc39.es/ecma262/#sec-properties-of-weak-ref-instances /// internal sealed class JsWeakRef : ObjectInstance { private readonly WeakReference _weakRefTarget; public JsWeakRef(Engine engine, JsValue target) : base(engine) { _weakRefTarget = new WeakReference(target); } public JsValue WeakRefDeref() { if (_weakRefTarget.TryGetTarget(out var target)) { _engine.AddToKeptObjects(target); return target; } return Undefined; } }