我們在js中可能經常會用到for in來遍歷對象中的屬性,當然for in中得到的屬性,只能是可枚舉的屬性,for in的時候,它會把對象的屬性(包括原型的屬性)遍歷一遍,看面看示例就明白了
例如: 有這麼一段代碼: 代碼如下: var array = []; array.push(1); array.push(2); array.push(3); for(var i in array) { console.log(i+":"+array[i]); } 此時會輸出什麼呢?當然是0:1 1:2 2:3 但是如果在for in之前加上Array.prototype.say = "hello"; 再次運行會輸出什麼呢? 復制代碼 代碼如下: 0:1 1:2 2:3 say:hello 看到了吧,這個時候,它會輸出原型的屬性 在很多時候,我們不需要遍歷它原型的屬性,還有一個原因就是,我們現在用到的對象,我們不能保證,其他開發人員,有沒有,在它的原型上加一些屬性呢?所以呢,我們就過濾一下我們對象的屬性吧,這個時候就用到了hasOwnProperty方法,如下: 復制代碼 代碼如下: for(var i in array){ if(array.hasOwnProperty(i)) { console.log(i+":"+array[i]); } } 再想想現在會輸出什麼呢?當然是0:1 1:2 2:3啦。