先让我们看一小段代码:
var o={}
Array.prototype.push.call(o,10);
/*注意,一定是Array.prototype而不是Array,因为push是Array对象的方法,而不是Array函数的方法*/
alert(o.length+"-"+o[0]);
在FireFox上运行很正常,结果是alert”1-10“,但是在IE上的输出却为undefined-undefined。
什么原因呢?
原来在IE中,一定要给o对像顶一个length属性,IE才会像处理数组一样处理你自己的this对象,因此,o的定义要更改为:
var o={length:0}.
再次运行,这次,IE显示结果也正确了。
怪不得jQuery对象的定义中要有对length长度属性的定义啦。