On Sep 4, 2013, at 4:15 PM, Filip Pizlo <[email protected]> wrote:

> 
> On Sep 4, 2013, at 3:09 PM, Brendan Eich <[email protected]> wrote:
> 
<snip solo much text :D >
>> But with ES5 Object.preventExtensions, etc., the horse is out of the barn.
> 
> It's there and we have to support it, and the fact that you can do 
> preventExtensions() to an object is a good thing.  That doesn't mean it 
> should become the cornerstone for every new feature.  If a user wants to 
> preventExtensions() on their object, then that's totally cool - and I'm not 
> arguing that it isn't.
> 
> The argument I'm making is a different one: should an object be 
> non-expandable by default?

Actually, here's a very good example:  Why do Maps and Sets allow expandos?

* They are logically buckets so an expando properties seem unnecessary
* We have seen in the past that people get really confused about property 
access -- see the enumerable "associative array" articles that do "new Array()" 
to get there magical associative array.  For (probably) common cases of string 
and numeric properties:
  - someMap["foo"]="bar" and someMap["foo"]; vs.
  - someMap.set("foo", "bar") and someMap.get("foo")

are sufficiently close to "the same" that developers _will_ do this, and think 
that they're using a Map.

So should Map be inextensible by default? The argument against supporting 
expandos on a  typed array seems even stronger for these collection types.

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

Reply via email to