<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jun 12, 2014, at 8:24 AM, Mark Miller wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Jun 12, 2014 at 8:19 AM, Allen Wirfs-Brock <span dir="ltr"><<a href="mailto:allen@wirfs-brock.com" target="_blank">allen@wirfs-brock.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; "><div class="">

<br>
</div>Fortunately there aren't very many of those. I think it is only Date and RegExp that have this issue among the ES6 built-ins</blockquote><div><br></div><div>WeakMap, Map, Set, others?</div></div></div></div></blockquote><div>Nope, they don't even have custom toString methods.</div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<div><br></div><div>The real problem includes ES6 classes as well. Whatever fix we choose, it should apply there as well -- not that I have a concrete proposal. This one's a real puzzler.</div></div></div></div></blockquote><div><br></div><div>By default they just inherit up the prototype chain, typically to Object.prototype.toSring</div><div><br></div><div>If a JS programmer chooses to over-ride toString, then it becomes their problem.</div><div><br></div><div>The same best practice should be taught to them too, if you are going to do a branding check in a toString method you should fall back to the default object behavior:</div><div><br></div><div>class MyClass {</div><div>   toString() {</div><div>      if (!myBrand(this)) return super.toString();</div><div>      ...</div><div>    }</div><div>}</div><div><br></div><div>We can't do this for them because there is no universal branding concept we can apply for them.</div><div><br></div><div>Allen</div><div><br></div><div><br></div><div><br></div></div></body></html>