例如:
有這麼一段代碼:
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:3 say
看到了吧,這個時候,它會輸出原型的屬性
在很多時候,我們不需要遍歷它原型的屬性,還有一個原因就是,我們現在用到的對象,我們不能保證,其他開發人員,有沒有,在它的原型上加一些屬性呢?所以呢,我們就過濾一下我們物件的屬性吧,這時候就用到了hasOwnProperty方法,如下:
for(var i in array){
if(array.hasOwnProperty(i)) {
console.log(i ":" array[i]);
}
}
再想想現在會輸出什麼呢?當然是0:1 1:2 2:3啦。