在有zepto的页面上,在控制台上输入 $() 。
在chrom下,显示为$() //[] 。而在 FireFox下, 显示为$() //Object { length: 0, selector: "" } 。
刚开始很疑惑后来,百度了一下 (百度地址)
1、jquery选择器$('selector')返回的不是数组,而是封装好的jquery对象。但这个对象有一个特别的地方,就是查询到的节点被以下标为属性,添加到了jquery对象上,所以它看起来像数组,因为它存在一些属性是数字;
及 (百度地址2)
要想让自己的Object也有这样的特点,就要继承数组,不过firebug很好欺骗,搞一个假数组就能蒙混过关了。 那怎么骗到它呢? 就是splice方法了,很关键,firebug觉得有splice就是数组,呵呵! 把任何function赋值给原型方法splice都行!
**(这段话有问题,我测试了 不是 firebug,而是 chrome )**
$.fn = {
length: 0,
// Because a collection acts like an array
// copy over these useful array functions.
forEach: emptyArray.forEach,
push: emptyArray.push,
splice: emptyArray.splice,
indexOf: emptyArray.indexOf
}

本文探讨了jQuery选择器返回的特殊对象与数组的区别,并介绍了如何通过splice方法使其看起来像数组,以欺骗某些浏览器的开发者工具。主要内容包括jQuery对象的特点、如何模仿数组行为以及其在开发过程中的应用。
547

被折叠的 条评论
为什么被折叠?



