> 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
[email protected]
https://mail.mozilla.org/listinfo/es-discuss