Le 21/11/2012 21:13, Tom Van Cutsem a écrit :
2012/11/21 David Bruant <[email protected] <mailto:[email protected]>>
Since the use of Object.getOwnPropertyNames may not be widespread,
maybe that making non-enumerable unique symbol properties could do
the trick (as it has with new {Object, Array, etc.}.prototype
additions)
1bis) If all standard built-in names are private, they're not
enumerated, neither in for-in, Object.keys,
Object.getOwnPropertyNames and you can have a unique name in any
of these enumeration operation if you've added them manually, so,
no backward compat (or close enough that it's acceptable in my
opinion)
Even disregarding the proxy whitelist hassle, let's not go there.
Making all the well-known unique symbols, like @iterator, private just
so they don't appear in Object.getOwnPropertyNames feels silly to me.
We have the distinction between unique and private symbols precisely
because we've identified a need for symbols that need to be unique but
not necessarily private!
Rest assured that it doesn't make me happy to propose this idea, but it
seems worthwhile to explore.
Allen's latest point about backward compat makes me feel that it may not
be that big of a problem ("Note that even in legacy code, if a gOPN
symbol valued element is used in any context that requires a property
key, things will still work fine. It is only explicitly doing string
manipulation on a gOPN element that would cause trouble. For example,
trying to string prefix every element a list of own property names.")
I guess only user testing could tell.
If absolutely necessary, it may not be absurd to have the following:
string + unique name = new unique name.
David
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss