前端小白,今天遇到了一个很严重bug。真的很小白!!!我对数组使用了for in遍历,然后for in会遍历到数组的后面添加的原型链属性,并不会遍历到原生原型链上的属性!!!并不是简单地便利数组中的数据。
1.对数组用for in时
Array.prototype.istrue = function(value) {return true;}
var a = [1,2];
for(var i in a) {
console.log(a[i]);}
输出结果:
1
2
function(value) {return true;}
所以数组的遍历中千万不要用for in,我们一般对对象的遍历使用。同时上面的i变量是string,并不是number
2.一般来说,我们对对象的遍历通常用for in
var a = {"x":1,"y":2};for(var i in a) {
console.log(a[i]);}
输出结果:
1
2
3.对数组的遍历我平时常用的是forEach和map,很方便
4.如果使用了for in遍历数组,就用hasOwnProperty来规避遍历到原型链上的属性或方法
Array.prototype.istrue = function(value) {return true;}
var a = [1,2];
for(var i in a) {
if(a.hasOwnProperty(i){
console.log(a[i]);
})
}
输出结果:
1
2