Callable objects protocol

Jordan Harband ljharb at gmail.com
Tue Dec 4 19:01:16 UTC 2018


What would `typeof` return on a callable object? There's a lot of code on
the web that uses a typeof of "function" to determine if something is safe
to call. There's also a lot of code on the web that uses a typeof of
"function" to do type detection. How would you suggest a callable object
navigate these potentially conflicting constraints?

On Tue, Dec 4, 2018 at 10:07 AM T.J. Crowder <
tj.crowder at farsightsoftware.com> wrote:

> On Tue, Dec 4, 2018 at 5:02 PM Sultan
> <thysultan at gmail.com> wrote:
> >
> > Something along the lines of Symbol.iterator protocol for defining
> > callback objects i.e: Symbol.callable:
>
> That's interesting. What's the primary motivation? Binding the data?
> That's easily done with a closure ([fiddle[1]):
>
> ```js
> const obj = (() => {
>     let value = 'value';
>     return () => value;
> })();
>
> console.log(obj() === 'value'); // true
> ```
>
> It's a bit more verbose than one would like, but usually that's washed out
> by the implementation (which is really trivial above).
>
> You can also do it with a Proxy on a function, but it doesn't really buy
> you anything.
>
> Be interested to know more about why you want non-function callable
> objects.
>
> -- T.J. Crowder
>
> [1]: http://jsfiddle.net/8qvpc7Lh/
> _______________________________________________
> 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/20181204/96779449/attachment.html>


More information about the es-discuss mailing list