JS 数组循环

  我们有时在处理数组时会扩展内置对象Array,但这样会有一些问题,现在举例解决一下。

var array = [1,2,3,4];
for(var i in array){
   print(array(i));
}

// 1
// 2
// 3
// 4

  现在我们扩展了内置对象Array,

Array.prototype.add = function(){};

    现在我们再次执行上面的 for..in 循环,会得到如下结果:

// 1
// 2
// 3
// 4
// function(){}

     这个不是咱们想要的结果,如果对其进行sum操作就会出现,莫名其妙的错误,并且难以调试出来,但是问题总是会有解决方法的,继续往下看。

for(var i = 0,len = array.length;i<len;i++){
  print(array(i));
}


// 1
// 2
// 3
// 4

    这种方式最重要的是它通过访问array的length属性来完成循环(数组内部元素的访问),而不是访问array对象上的其他属性(即:function,其下标是“add” 是一个属性)。

    这样就可以得到我们预期的结果了,但通过这个例子看到,我们除非必要尽量的不要扩展内置对象,同时也给继承链添加了“烙印”,这样其实就是给bug提供了温床。

    通过这个例子我的收获是:温故而知新,之前看到这个的时候并没有太大的体会与理解,现在遇到了问题,然后返回头来看到这个例子,问题解决了同时也加深了对数组操作的理解。

    其实数组的操作没有想象中的那么简单,只是看似简单(增,删,改,查),实则不易啊,数组操作值得好好的研究,最后望大家看过这篇博客有所收获。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值