On Fri, Jan 6, 2012 at 1:29 AM, François REMY <span dir="ltr"><<a href="mailto:fremycompany_pub@yahoo.fr">fremycompany_pub@yahoo.fr</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Such an implementation would be very slow and not efficient, because searching for a key in the "boundFunctions" weakmap would take time. It can be a polyfill solution but a new implementation need something better.<br>

<br>
I think the solution would be to create an "invisible" [[boundFunctions]] property for all objects containing a dictionnary<weak<function>, weak<boundFunction>> of already-bound functions on the object. The implementation of bind would then be :<br>

<br>
- if objToBind is not a reference, create a new boundFunction and return it.<br>
- if objToBind.[[boundFunctions]] don't exist, create it.<br>
- else, check if it contains a key for functionToBind //when you are processing the dictionnary, remove obsolete entries you may find<br>
   - if yes, check if the weak reference is alive<br>
   - if yes, returns the boundFunction<br>
- create a new boundFunction and store it into objToBind.[[boundFunctions]]<br>
- return the newly created boundFunction<br>
<br>
Would that be possible?<br></blockquote><div><br></div><div>No, for the same reason. The mutable state you hung off this internal property creates an ambient communications channel.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
François<br>
<br>
<br>
<br>
-----Message d'origine----- From: Brendan Eich<br>
Sent: Friday, January 06, 2012 2:22 AM<br>
To: Andrea Giammarchi<br>
Cc: Axel Rauschmayer ; François REMY ; es-discuss<br>
Subject: Re: Improving Function.prototype.bind<br><div class="HOEnZb"><div class="h5">
<br>
On Jan 5, 2012, at 4:47 PM, Andrea Giammarchi wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Guys, by any chance we can go back into the topic?<br>
</blockquote>
<br>
You'll have to polyfill Function.prototype.bind in the current world of pre-ES5 browsers. Why not then go on to wrap it in a memoizing version that uses a WeakMap if available (emulated with strong keys/values array-based implementation if not)?<br>

<br>
If you need this machinery, it's all doable. If we should evolve a Harmony bind or betterBind based on your experience and others, we can do that.<br>
<br>
Right now the lack of memoization is not a burning issue, from what I hear. You've raised it, I think for the first time on es-discuss.<br>
<br>
/be <br>
______________________________<u></u>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/<u></u>listinfo/es-discuss</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>    Cheers,<br>    --MarkM<br>