BTW, `typeof new Proxy({}, {apply() { return 1 }})` returns
`"object"`, not `"function"`. Not sure this is any different.----- Isiah Meadows [email protected] www.isiahmeadows.com On Tue, Dec 4, 2018 at 2:02 PM Jordan Harband <[email protected]> wrote: > > 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 > <[email protected]> wrote: >> >> On Tue, Dec 4, 2018 at 5:02 PM Sultan >> <[email protected]> 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 >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

