item;
while ((item = list.shift())) {//没有直接判定length,加速
// 为什么这里用call就可以,而apply就不行?
//搞定 – apply的第二个参数必须是一个array对象(没有验证array-like是否可以,而call没有这个要求)
//apply是这样描述的:如果 argArray(第二个参数) 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
fn.call(window, item);
}
},
inArray = function () { //检测数组中是否包含某项,返回该项索引
//预编译
return isIndexOf ? function (array, elem, i) {
if (array)
return isIndexOf.call(array, elem, i);
return -1;
} : function (elem, array, i) {
var len;
if (array) {
len = array.length;
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
for (; i < len; i++) {
if (i in array && array[i] === elem) {
return i;










