<br><br><div class="gmail_quote">On Wed Jan 21 2015 at 4:11:04 PM Mark Miller <<a href="mailto:erights@gmail.com">erights@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Jan 21, 2015 at 1:05 PM, Jordan Harband <span dir="ltr"><<a href="mailto:ljharb@gmail.com" target="_blank">ljharb@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span><div>> <span style="font-size:13px">Just checking: Are we talking about adding it to each instance as a non-configurable non-writable data property?<br></span><br></div></span><div>Mark: No, not to each instance, but to Array.prototype, Function.prototype, etc. If someone wants to override it on a specific instance that's fine, and I don't think it's important to protect against that.</div></div></blockquote><div><br></div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>In that case, I find this unacceptable, as it breaks the branding invariant that some legacy ES5 code depends on.</div></div></div></div></blockquote><div><br></div><div>I just want to clarify, this is what you're referring to, correct?</div><div><br></div><div><div>> Object.getOwnPropertyDescriptor(Object.prototype, Symbol.toStringTag)</div><div>undefined</div><div><br></div><div>> Object.defineProperty(Object.prototype, Symbol.toStringTag, { </div><div>  value: "Whatever I want it to be" </div><div>});</div><div><br></div><div>> Object.prototype.toString.call(function() {})</div><div>"[object Whatever I want it to be]"</div><div>> Object.prototype.toString.call("A string")</div><div>"[object Whatever I want it to be]"</div><div>> Object.prototype.toString.call({})</div><div>"[object Whatever I want it to be]"</div><div>> Object.prototype.toString.call(1)</div><div>"[object Whatever I want it to be]"</div></div><div><br></div><div><br></div><div><br></div><div>This wouldn't be possible if all built-in prototypes had an explicitly defined @@toStringTag that was  { [[Enumerable]]: false, [[Writable]]: false, [[Configurable]]: false } (which is what I believe Jordan is presenting)</div><div><br></div><div>Rick</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><span><div><br></div><div>> I would not be happy with making the built-ins nonconfigurable. Just like Function.prototype.length, it should be unlocked.</div><div><br></div></span><div>Domenic: Changing Function#length makes sense to me - the Function#bind shim does nasty things to ensure "length" is set properly, for example, and it would be much easier if the length was editable. Do you have a use case in mind where you'd want to change a language builtins' @@toStringTag value?</div></div><div><br></div><div>We can always unlock it later, but it seems like we can't lock it down once it's unlocked, so without any valid use cases, it seems like a risky move to unlock it now.</div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 21, 2015 at 1:00 PM, Mark S. Miller <span dir="ltr"><<a href="mailto:erights@google.com" target="_blank">erights@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Jan 21, 2015 at 12:57 PM, Mark Miller <span dir="ltr"><<a href="mailto:erights@gmail.com" target="_blank">erights@gmail.com</a>></span> wrote:</div><div class="gmail_quote">[...]<span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>Is there anyone who wouldn't be happy with "all builtins' @@toStringTag is not configurable" and "drop the ~ prefixing completely"?</div></div></blockquote><div><br></div></span><div>Just checking: Are we talking about adding it to each instance as unconfigurable?</div></div></div></div></blockquote><div><br></div></span><div>Sorry, incomplete question. Meant:</div><div><br></div>Just checking: Are we talking about adding it to each instance as a non-configurable non-writable data property?<span><font color="#888888"><div><br></div><div> </div></font></span></div><span><font color="#888888">-- <br><div>    Cheers,<br>    --MarkM</div>
</font></span></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div></div></div><div dir="ltr"><div class="gmail_extra"><br><br clear="all"><div><br></div>-- <div>  Cheers,<br>  --MarkM</div>
</div></div>
______________________________<u></u>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/<u></u>listinfo/es-discuss</a><br>
</blockquote></div>