使用for..in时会遍历对象原型中的自定义属性

Array.prototype.haha=function(){}
var arr=[];
for(var p in arr){
  alert(p) //haha
}

上面代码在所有浏览器中均输出‘haha’

解决方法

Array.prototype.haha=function(){}
var arr=[];
for(var p in arr){
  if(arr.hasOwnProperty(p)){
    continue
  }
  alert(p) 
}
hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,当属性是对象本身的一个成员时,返回值为true。

你可能感兴趣的:(javascript)