On Fri, Jan 6, 2012 at 1:29 AM, François REMY <fremycompany_...@yahoo.fr>wrote:

> 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.
>
> 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 :
>
> - if objToBind is not a reference, create a new boundFunction and return
> it.
> - if objToBind.[[boundFunctions]] don't exist, create it.
> - else, check if it contains a key for functionToBind //when you are
> processing the dictionnary, remove obsolete entries you may find
>   - if yes, check if the weak reference is alive
>   - if yes, returns the boundFunction
> - create a new boundFunction and store it into objToBind.[[boundFunctions]]
> - return the newly created boundFunction
>
> Would that be possible?
>

No, for the same reason. The mutable state you hung off this internal
property creates an ambient communications channel.


>
> François
>
>
>
> -----Message d'origine----- From: Brendan Eich
> Sent: Friday, January 06, 2012 2:22 AM
> To: Andrea Giammarchi
> Cc: Axel Rauschmayer ; François REMY ; es-discuss
> Subject: Re: Improving Function.prototype.bind
>
> On Jan 5, 2012, at 4:47 PM, Andrea Giammarchi wrote:
>
>  Guys, by any chance we can go back into the topic?
>>
>
> 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)?
>
> 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.
>
> 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.
>
> /be
> ______________________________**_________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/**listinfo/es-discuss<https://mail.mozilla.org/listinfo/es-discuss>
>



-- 
    Cheers,
    --MarkM
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to