Jumping in the middle of this thread to pick up on one aspect...
On 28/07/11 6:15 PM, Ian Hickson wrote:
Are we really concerned about objects stringifying to "[Object Foo]"?
It seems that the usefulness of such stringification is far outweighed by
the usefulness of being able to treat the attribute as a string attribute
like any other reflecting attribute while also being able to use methods
on it. In fact, it is consistent with every DOMString attribute: they
don't stringify to "[Object String]", yet you can call methods on them.
What's the difference?
There is a disadvantage. In JS, doing a comparison between two objects,
regardless of whether they have custom stringification behaviour, will
compare based on object identity and not the string.
<!DOCTYPE html>
<iframe id=x src=b.html></iframe>
<iframe id=y src=b.html></iframe>
<script>
window.onload = function() {
var xw = document.getElementById("x").contentWindow;
var yw = document.getElementById("y").contentWindow;
alert([xw.location, yw.location,
xw.location == yw.location].join("\n"));
};
</script>
The two Location objects stringify to the same thing, but are not ==. I
think this can be confusing.