Standard builtins' prototypes and toString

Allen Wirfs-Brock allen at
Thu Jun 12 08:34:22 PDT 2014

On Jun 12, 2014, at 8:24 AM, Mark Miller wrote:

> On Thu, Jun 12, 2014 at 8:19 AM, Allen Wirfs-Brock <allen at> wrote:
> 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
> WeakMap, Map, Set, others?
Nope, they don't even have custom toString methods.

> 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.

By default they just inherit up the prototype chain, typically to Object.prototype.toSring

If a JS programmer chooses to over-ride toString, then it becomes their problem.

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:

class MyClass {
   toString() {
      if (!myBrand(this)) return super.toString();

We can't do this for them because there is no universal branding concept we can apply for them.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list