还是把for in的问题记录下来

来源:互联网 发布:蛤蟆知乎 编辑:程序博客网 时间:2024/06/06 20:20

老早之前就看到过,通过prototype拓展过的Array数组会有一个问题,for-in的时候会把扩展进来的方法遍历出来,今天又忘了,把它记录下来。

         顺便挖了挖解决办法,最根本的方法是少用for in。

非得用的话,如果只需要遍历数组中的元素,用 for(var i in array)时,对i加一个判断是否为数字,这样就不会遍历到原型里面添加的方法或者属性。

        如果数组存在属性又存在原型属性,可以用hasOwnProperty来判断。


另外一个要注意的问题是,比如for(var i in array) 其中的每一个i都是字符串类型!类似于array['0'],array['1']的感觉。