1111
2222
3333
444
for(var k in query){ log(k + ': ' + eles[k].length + ' ' + getType(eles[k])); // 使用Object.prototype.toString.call(); } ``` 最后的结果 #### 1.Chrome 45 [](http://blog-cdn.xjp.in/2015/10/[email protected]) #### 2.FireFox 41.0.2 [](http://blog-cdn.xjp.in/2015/10/[email protected]) #### 3.safari 9.0.1 [](http://blog-cdn.xjp.in/2015/10/[email protected]) 嘿嘿 傻逼了吧 中出叛徒 safari不对了 它把getElement的返回错了,然而并不是错了 ,而是老的标准返回值为NodeList,只是它没有更新吧可能。剩下两个浏览器都没有问题。 可以看到,只有querySelector不是live的,其它的几个都会随着dom元素的改变而自动改变,貌似是因为在取值的时候回重新计算过。 # 二、Element与Node 刚刚上面说到NodeList和HTMLCollection的区别的时候说到这个了 Node即是节点,Element即是元素,元素当然属于节点,所以 ` Element instanceof Node === true;` ,所有的html元素都是Element,以及[各种继承自Element的元素](http://www.w3.org/TR/html5/index.html#elements-1) ,这个是HTML5的元素。TextNode只是Node,不属于Element。 # 三、IndexOf与for 后来我随便到处看,随便看看了[sizzle.js](http://sizzlejs.com)这个库的源码,发现里面用到一个函数,查找数组中的某个值的位置,原本一般来说是用 `indexOf` 就可以了的,但是这个库里自己用了一个for循环遍历数组然后查找值。。。。。额。。。。。还说根据测试,for循环速度比原生的要快,测试的地址在这里,[thor-indexof-vs-for](http://jsperf.com/thor-indexof-vs-for/5)。我还是有点疑惑,如何然后自己写了一些数据试了一下。。。。果然for快一些。。。。感觉三观毁掉了又。。。。。 这段时候比较空 不知道干些什么好