Array.prototype.indexOf

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
//参数item:必选项,要查找的Array对象中的一子项
//参数i:可选项。该整数值指出在Array对象内开始查找的索引。如果省略,则从字符串的开始处查找。
if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
//alert("prototyping...");
//因为"||"或运算符是短路运算,就是当左边为true时不会去执行右边,直接就返回true,只有当左边为false时才会执行,也就是说除非以下情况才会执行i=0;
1.没有给indexOf传递参数i,比如array.indexOf(item);
2.i = 0、空字符串("")、undefined、null、NaN、false
i || (i = 0);
//这行显然就是得到数组的长度 var length = this.length;
//如果传的i<0,那么查找位置就从length+i开始查找,这里其实还要做个判断,i不能小于-length;不然i = length + i;还是小于0
if (i < 0) i = length + i;
//这里就是从i位置开始查找item for (; i < length; i++)
//找到就返回item在Array中的位置
if (this[i] === item) return i;
//找不到就返回-1 return -1;
};
</script>
</body>
</html>

posted @ 2015-09-15 10:16  晓之殇  阅读(574)  评论(0编辑  收藏  举报