Earlier quoted context omitted.
1) Many languages won't allow you to redefine a type. 2) Mutate the prototype of a "frozen" object and you would indirectly affect it through its prototype chain... or mutate an nested property inside a "frozen" object. Most of JS standard library and most popular frameworks and libraries have fully mutable definitions. That sucks and is BAD design decision.
> Many languages won't allow you to redefine a type. This counterargument is not a good one. Just because other languages do things a certain way doesn't mean it's the right way in every situation. C++ has multiple inheritances and template metaprogramming, but that's C++. > Most of JS standard library and most popular frameworks and libraries have fully mutable definitions. That sucks and is BAD design decision. It'…
2) Just like you can polyfill your code, malicious input can poison your prototypes.