<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jan 17, 2015, at 11:57 AM, Fabrício Matté wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div class="gmail_extra">> Currently in ES6, the only reserved keywords that can appear immediately before a `.` are `this` and `super`.   </div><div><br>The `this` binding resolves to a value, so MemberExpressions make sense. The `super` keyword is being implemented in ES6, so there are no precedents to set expectations.<br><br>> Any other reserved word followed by a `.` is a syntax error.  So reserved words followed by period and an identifier is  one of the few available extension alternatives we have available.  And is a natural ready syntax think of new.target' as meaning give me the target value of the currently active `new` operator.<br><br>I agree `new.target` is very natural and pleasant to read. It just feels rather alien to see an operator in the beginning of a MemberExpression, which currently would only be allowed in this very specific scenario. Of course, if this syntax extension form would be useful for other use cases as Kevin and you have outlined, then I don't oppose it.<br><br>> I suspect the hypothetical naive JS programmer postulated above wound't be aware of any of those concepts.</div><div><br></div><div>A naive one probably not, but a curious avid developer most definitely would. ;)<br><br>> hopefully they will say what is `new.target', "google it" and immediately find the answer.<br><br>You mean, land on a Stack Overflow answer with thousands of upvotes and very little explanation about why/how a MemberExpression can begin with an operator. Of course, if you interpret `new` as simply a ReservedWord token instead of an operator, then everything makes perfect sense.</div></div></blockquote><div><br></div><div><br></div><div>The way I accomplish in the grammar was to add the productions:</div><div><br></div><div><i>MemberExpression</i> : </div><div>      <i>MetaProperty</i></div><div><i>MetaProperty</i> :</div><div>       'new'    '.'   'target'</div><div><br></div><div>So we could start talking about "meta properties" as a <i>MemberExpression</i> alternative and say `new.target` is a "meta property".</div><div><br></div><div>Allen</div></div></body></html>