> the apply hook needs objects anyway. I meant functions
On Wed, Dec 5, 2018 at 1:33 PM Andrea Giammarchi < [email protected]> wrote: > I've actually replied to the op, I didn't mean to answer you directly, but > the only reason I wrote that is because I could, no other reasons. > > However, people unaware of the handleEvent pattern for event listeners > often hope to be able to pass objects as listeners, ignoring the fact they > can do that already (but they need a handleEvent method, own or inherited, > in that object). > > There is at least another use case I can't remember now, but I do remember > doing the Proxy dance before ending up realizing that the apply hook needs > objects anyway. > > But yeah, I don't think it's a must have, specially because we can have > something similar already, as shown in my example. > > > On Wed, Dec 5, 2018 at 1:25 PM Ranando King <[email protected]> wrote: > >> Maybe I asked it wrong. >> >> How is making an ordinary object callable at all useful for anything that >> can't already be easily handled via objects and functions? (looking for use >> cases here) >> How does this make coding easier to do and understand? (for the AST >> parser and for the human) >> >> On Tue, Dec 4, 2018 at 11:54 PM Andrea Giammarchi < >> [email protected]> wrote: >> >>> How about this: >>> >>> ```js >>> >>> // the poly >>> if (!Symbol.callable) >>> Symbol.callable = Symbol('callable'); >>> >>> // the setup >>> class Callable extends Function { >>> constructor(object) { >>> super('return arguments.callee[Symbol.callable](...arguments)'); >>> // sloppy mode FTW! >>> Object.setPrototypeOf(this, object); >>> } >>> } >>> >>> >>> // the example >>> const obj = new Callable({ >>> [Symbol.callable](value) { >>> return value + this.value; >>> }, >>> value: 123 >>> }); >>> >>> obj(7); // 130 >>> >>> >>> ``` >>> >>> On Wed, Dec 5, 2018 at 12:02 AM Sultan <[email protected]> wrote: >>> >>>> Something along the lines of Symbol.iterator protocol for defining >>>> callback objects i.e: Symbol.callable: >>>> >>>> const obj = { >>>> [Symbol.callable]: function (...args) { return >>>> this[Symbol.for('value')] }, >>>> [Symbol.for(''value')]: 'value', >>>> } >>>> >>>> assert(obj() === 'value') >>>> _______________________________________________ >>>> 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

