How can a lexer decide a token to be "get", "IdentifierName" or "Identifier" ?
Brandon Benvie
brandon at brandonbenvie.com
Tue Feb 5 08:55:46 PST 2013
Indeed, and given use of ES6, I expect things like this wouldn't be very
uncommon (I think is supposed to be Object.define right?):
Object.define(x, {
get a(){},
set a(v){},
get b(){},
c(){}
});
Instead of most current descriptor stuff (since enumerability and
configurability are rarely desired to be false).
On Tuesday, February 5, 2013, Rick Waldron wrote:
>
>
>
> On Tue, Feb 5, 2013 at 3:19 AM, gaz Heyes <gazheyes at gmail.com> wrote:
>
>> On 4 February 2013 23:44, Brendan Eich <brendan at mozilla.com> wrote:
>>
>>> What's confusing?
>>>
>>
>> The fact that you can have an object property without a colon and a
>> function without a function keyword.
>>
>
> ES6 concise methods will make this the norm:
>
> let o = {
> meaning() {
> return 42;
> }
> };
>
> o.meaning(); // 42
>
>
>
>> Then a property descriptor uses a completely new syntax to define the
>> same thing. Why?
>> Object.defineProperty(window,'x',{set:alert});
>> x=1;
>>
>
>
> What part is "new syntax"? Property descriptors are just object literal
> syntax—did you mean "different syntax"?
>
>
>
>>
>> To me this seems hacked together.
>>
>>
>>> ({'get'x(){return 123;}}).x
>>>>
>>>
>>> That's not legal ES5.
>>>
>>
>> Some engines support it though and I'm pretty sure Firefox did at some
>> point.
>>
>
> I think Brendan was referring to the quotes, ie. 'get'. Remove those for
> legal syntax:
>
> ({ get x() { return 123; } }).x
>
>
> Rick
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20130205/2b558cad/attachment.html>
More information about the es-discuss
mailing list