I see no reason why this needs to be a reflected property. As to
whether it is an exotic internal property or just prose, that is a
specification expository issue for which I defer to Allen. But the
spec only needs such extra state for the exotic global object. There's
nothing general about it.

On Tue, Dec 18, 2012 at 10:56 AM, Andrea Giammarchi
<andrea.giammar...@gmail.com> wrote:
> {deletable: false} does not look that bad, semantically speaking ... you
> don't have to explain much what that would do in a property descriptor.
> Thing is, all others are false by default so you might want to chose same
> default for this property and in this case the name is wrong.
> {nondeletable:false} looks like a typo while {sealed:false} for the single
> property would be probably better? {sealed:true, configurable:true} means
> non deletable and {sealed:true, configurable:false} could mean even
> inherited properties cannot be re-defined while sealed:false would be the
> default?
>
> Or maybe not ...
>
>
> On Tue, Dec 18, 2012 at 9:31 AM, David Bruant <bruan...@gmail.com> wrote:
>>
>> Hi,
>>
>> Le 18/12/2012 18:08, Brendan Eich a écrit :
>>>
>>> Mark S. Miller wrote:
>>>>
>>>> That could work, but because of its complexity, I'm leaning back towards
>>>> the "configurable data property that refuses to be configured" approach. Is
>>>> there a problem with that? It self-hosts fine.
>>>
>>>
>>> Certainly this is the simplest solution. It has a slight smell, but no
>>> worse than the others'!
>>
>> In an earlier message [1] I suggested that "enumerable" was more of a
>> convention than an actual semantics. Indeed, neither host objects nor
>> upcoming proxies are expected anything when it comes to "enumerable".
>> However, a script can have some expectations that a property defined and/or
>> reflected as enumerable: true will show up in for-in and Object.keys while
>> won't if enumerable: false.
>>
>> One idea to reduce the smell of configurable-yet-non-deletable properties
>> would be to add a new "nonDeletable" attribute (I'm not happy with the
>> negation, but can't find a better wording). Just to clarify, this attribute
>> doesn't need to be defined on every property of every object, only in cases
>> where one could expect configurable:false for the [dontDelete] part, but
>> configurable is actually true for other reasons.
>>
>> In our case, this attribute would be relevant for both WindowProxy global
>> var/functions and [Unforgeable] properties of the same object. This way,
>> "host objects" and proxies have a convention when they want to express to
>> the code that interact with them that a property can't be removed by use of
>> the "delete" operator, but the property may disappear by other means (in the
>> case of WindowProxy, change of the underlying window).
>>
>> Defining the "nonDeletable" attribute (or whatever better name) is a
>> decision that could be fully made on the WebIDL side, because it defines
>> host objects and host objects can define their own properties, but I think
>> it's important the convention emerges from the ECMAScript side.
>>
>> David
>>
>> [1]
>> https://mail.mozilla.org/pipermail/es-discuss/2012-December/027200.html
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss@mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>
>



-- 
    Cheers,
    --MarkM
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to