1) The ES6 class pattern makes abstractions whose .prototype is an ordinary
object. This change makes the builtin abstractions more consistent with
class-based abstractions, minimizing surprise for future JS programmers who
learn the language at ES6 or later.

2) From a security perspective, the one ES5 builtin abstraction that opened
a global communications channel through .prototype was Date, since
Date.prototype was a Date instance, and Date instances have mutable state
which remains observably mutable after Object.freeze. With the addition of
RegExp.prototype.compile, RegExp joins the set of problematic ES5
abstractions.


Neither of these argue against making Array.prototype specifically be an
Array instance. I prefer that it not be on esthetic grounds only, and am
willing to switch given evidence. I concede that Kyle's book is sufficient
evidence.




On Thu, Feb 19, 2015 at 1:08 PM, Michał Wadas <[email protected]> wrote:

> Is there a good reason behind making prototypes ordinary objects?
>
> On the margin - I would assume Array.empty to be static method to clean
> array.
>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
>


-- 
    Cheers,
    --MarkM
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to