Concise Method Binding

Andrea Giammarchi andrea.giammarchi at gmail.com
Thu Nov 12 11:56:27 UTC 2015


FWIW, I've added my final considerations in there, hoping that's remotely
useful to anyone.
https://github.com/zenparsing/es-function-bind/issues/17#issuecomment-156083673

Best Regards

On Thu, Nov 12, 2015 at 7:46 AM, Andrea Giammarchi <
andrea.giammarchi at gmail.com> wrote:

> You basically demonstrated nobody read my comment in there months ago ;-)
>
>
> https://github.com/zenparsing/es-function-bind/issues/17#issuecomment-120978833
>
>
> Anyway, the security concern is non  existent to me, every method of every
> instance of every class can  be a communication channel, everything bound
> can be a communication channel, I don't see why ::obj.someMethod would be
> different and  is not explained anywhere in there.
>
> But since nobody read that thread anymore,  I guess it's pointless to even
> keep writing in there.
>
> Best Regards
>
>
>
>
>
>
> On Wed, Nov 11, 2015 at 4:52 PM, Bergi <a.d.bergi at web.de> wrote:
>
>> Andrea Giammarchi schrieb:
>>
>>> Just my thoughts, I wouldn't put any self-bound thing in the class and
>>> rather improve that `::` proposal so that whenever you `obj::method` it
>>> creates a uniquely bound callback so that `obj::method === obj::method`
>>>
>>
>> This was considered:
>> https://github.com/zenparsing/es-function-bind/issues/17 - it's quite
>> unexpected that an operator would return the same result every time, and
>> there are security considerations as well. Also it would be quite
>> complicated to spec - how and where did you store the memoisation. Feel
>> free to join the discussion!
>>
>> Using the `::` operator in the class declaration itself makes sense to
>> me. It conveys "this method will always be bound" very effectively, and you
>> wouldn't even need special syntax to access it.
>> ```js
>> class Xample {
>>   ::myListener(…) {…}
>> }
>> ```
>> should desugar to
>> ```js
>> class Xample {
>>   // a getter on the prototype
>>   get myListener() {
>>     // with per-instance memoisation
>>     return this.myListener = (…) => {
>>       // that returns a bound method
>>>>     };
>>   }
>> }
>> ```
>> It might be equivalently done via a custom decorator of course:
>> ```js
>> class Xample {
>>   @autobind
>>   myListener(…) {…}
>> }
>> ```
>>
>> Regards,
>>  Bergi
>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20151112/698cf7d0/attachment.html>


More information about the es-discuss mailing list