I've today discovered some strange behaviour in IE8's implementation of the DOM select element's JavaScript 'options' property.
Given the following HTML:
<select id="sel"><option value="val">An option</option></select>
And the javascript:
var sel = document.getElementById('sel');
alert(sel === sel.options); //alerts 'true' in IE8
Obviously, the clever fellow writing the select implementation on IE8 has written an indexer on the select element, and then had it expose itself as its own 'options' property to JavaScript.
My question is: is this expected functionality, according to the JavaScript language spec? Is this a known bug? Should I continue to treat the 'options' property as an object, rather than specifically an Array?
This is not how the select DOM element behaves under Firefox 3.5, Chrome 1.0, or Safari 3.1, where the 'options' property is exposed as a JavaScript array...
For reference, I came across this when I passed the 'options' property to the jQuery constructor in order to wrap its elements. Rather than the expected result of a jQuery object with X elements (as occured using Firefox, Chrome and Safari), I was returned a jQuery object with 1 element (the select element itself).