> Name sounds like a stripped-down uninterned symbol (http://bit.ly/bY3Jkg) to 
> me.

Yup.

> It's an object with a magic attribute that says, unlike any other object you 
> might try to use it as a property name, it is not coerced into a string 
> first.  And it is compared by identity when looked up.  And it is invisible 
> to (all?) enumerations of property names.

Yup again. Basically it entails a slight generalization of the property lookup 
semantics; instead of ToString there would be a ToPropertyName meta-operation, 
which for existing ES objects would just delegate to ToString, but for the new 
class of things would be the identity.

> I have to wonder if it would be a worthwhile generalization to be able to 
> confer these magical attributes on arbitrary objects?  This might allow more 
> experimentation with namespace ideas.

This is worth exploring. I'd worry about unintended consequences of an 
attribute that can be turned on/off at will. But even if it were fairly 
restricted -- e.g., you could turn it on but you couldn't turn it back off 
again -- it might be more powerful.

Tucker: if the "property-nameness" attribute weren't transferrable but names 
were objects with property tables, do you think that would be powerful enough? 
Or would you want the ability to define custom constructors, e.g.:

    function MyCustomKindOfNamespace() {
        Object.becomePropertyName(this);
        // ...
    }

Dave

PS Still, I have my doubts about using any such mechanisms for versioning. 
Incidentally, ROC was just talking about versioning and metadata on the web:

    http://weblogs.mozillazine.org/roc/images/APIDesignForTheMasses.pdf

He wasn't talking about JS API design, but some of the lessons still apply.

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

Reply via email to