<div dir="ltr">Someone made an experiment with the Mozilla “getWeakReference” apparently.<div><br></div><div><a href="https://gist.github.com/Benvie/7123690">https://gist.github.com/Benvie/7123690</a><br></div><div><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.getWeakReference">https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.getWeakReference</a><br></div><div><br></div><div>I had this as granted with other languages, I still don’t understand why has this not been enabled by default in javascript.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 4 November 2015 at 22:54, Coroutines <span dir="ltr"><<a href="mailto:coroutines@gmail.com" target="_blank">coroutines@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Wed, Nov 4, 2015 at 2:36 PM, Rick Waldron <<a href="mailto:waldron.rick@gmail.com">waldron.rick@gmail.com</a>> wrote:<br>
<br>
> On Wed, Nov 4, 2015 at 8:16 AM Coroutines <<a href="mailto:coroutines@gmail.com">coroutines@gmail.com</a>> wrote:<br>
<br>
</span><span class="">>> obj[Symbol.weakValues] = true;<br>
>> obj[Symbol.weakProperties] = true;<br>
<br>
</span><span class="">> 2. For security purposes, only code that has been explicitly given access to<br>
> _both_ the weakmap and a key may gain access to the value stored within the<br>
> weakmap. This is why there is no enumeration—if there were, then any code<br>
> that could access the weakmap could then also access all of the keys and<br>
> values. If that's a desirable trait, then just use a Map.<br>
><br>
> These things cannot be done with Proxy, because anything that Proxy does<br>
> will inevitably be a strongly held reference.<br>
<br>
</span>Well, you explained the mystery behind why WeakMap can't be iterated<br>
over - but I was saying I would combine Proxy with a theoretical<br>
Symbol for marking keys and/or values as weakly-referenced to create<br>
WeakSet and WeakMap (if I wanted).  I think I just prefer Lua in this<br>
area:<br>
<br>
  local tmp = setmetatable({ 'a', 'b', 'c' }, { __mode = 'v' })<br>
<br>
  for k, v in ipairs(tmp) do<br>
    print(k, v)<br>
  end<br>
<br>
'a', 'b', and 'c' are weakly-referenced and can be iterated over, will<br>
be marked by the next GC step, and will not survive the next GC<br>
collection cycle.  I wish JS let me create weak references as simply:<br>
<br>
  var tmp = [ 'a', 'b', 'c' ]<br>
<br>
  tmp[Symbol.weakValues] = true;<br>
<br>
This is what I was saying :>  I understand that you need both a<br>
reference to the WeakMap and the object you're using as a "weak key"<br>
but I think it could be iterable if the weak references have not been<br>
broken yet - if the objects in that WeakMap have not been collected<br>
yet.  I would not want "permanently" strong references with a Map.<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><a href="http://www.soundstep.com" target="_blank">www.soundstep.com</a></div>
</div>