Standard builtins' prototypes and toString
C. Scott Ananian
ecmascript at cscott.net
Thu Jun 12 11:29:15 PDT 2014
On Thu, Jun 12, 2014 at 12:59 PM, Allen Wirfs-Brock
<allen at wirfs-brock.com> wrote:
> So, I think the current spec. best matches our consensus about changing
> these prototypes to non-consructor instances. I think my proposed
> alternative toString fall back pattern is more useful, but is a bigger
> breaking change. Are we willing to up the bet, or should we let it ride as
> is?
Just restating and naming the alternatives:
(a) `#toString` throws TypeError when given a non-instance. Changes
`Date#toString()`, no change to `Date#toString.call({})`.
(b) `#toString` is generic; invokes `Object#toString` when given a
non-instance. Changes both `Date#toString()` and
`Date#toString.call({})`.
(c) `#toString` is generic; uses a "zero" value when given a
non-instance. No change to `Date#toString()`; changes
`Date#toString.call({})`.
(d) `#toString` returns a "zero" value when given a prototype, throws
TypeError otherwise. No change to `Date#toString()` or
`Date#toString.call({})`.
Option (a) is what is in the current spec.
Options (b) and (c) make the `toString` method generic.
Option (d) preserves compatibility to the greatest degree possible.
--scott
ps. I prefer (a).
More information about the es-discuss
mailing list