I don't think introducing `public` here has any value. We have `static #a = 1` eventually for private already, the default should follow the classes behavior, IMO
On Wed, Dec 5, 2018 at 10:46 PM Ranando King <[email protected]> wrote: > That's the kind of thing I was shooting for with static lexical scope > variables. There's 2 problems with it given the way things are going > though. Take a look. > > ```js > function foo() { > static a=1, > b=2, > c=3; > } > ``` > By the way I'm thinking, this would create 3 static variables within foo > that are only initialized once and retain whatever value is set on them > across invocations. Basically, the object `foo` carries around a closure > containing those values. Problem is, this is private to foo. That conflicts > with class-fields and it's sigil-means-private model. > > Ignoring that, public static variables can also be done (but it'd be the > first ever introduction of `public` in ES. > ```js > function foo() { > static public a=1, > b=2, > c=3; > } > ``` > This would make `foo.a`, `foo.b`, & `foo.c` accessible as public > properties of `foo`. > > Think this needs to be a proposal? > > > On Wed, Dec 5, 2018 at 1:39 AM Isiah Meadows <[email protected]> > wrote: > >> Personally, I'd prefer something else: a means of a function object >> literal that's still callable, but I can tack other properties to it >> easily. Something like this, maybe: >> >> ```js >> { >> (...args) { ... }, >> } >> ``` >> >> In this, the `this` value is set to the callee itself, not the given >> `this` value. >> >> Not married to the syntax, but I want the functionality. >> On Wed, Dec 5, 2018 at 01:34 Andrea Giammarchi < >> [email protected]> wrote: >> >>> > 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 >>> >>
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

