讀古今文學網 > 編寫高質量代碼:改善JavaScript程序的188個建議 > 建議9:不要信任hasOwnProperty >

建議9:不要信任hasOwnProperty

hasOwnProperty方法常被用做一個過濾器,用來消除for in語句在枚舉對像屬性時的弊端。考慮到hasOwnProperty是一個方法,而不是一個運算符,因此,在任何對像中,它可能會被一個不同的函數甚至一個非函數的值所替換。

例如,在下面代碼中,obj對象的hasOwnProperty成員被清空了,此時如果再利用這個方法來過濾出obj對象的本地屬性就會失敗。


var obj={},name;

obj.hasOwnProperty=null;

for(name in obj){

if(obj.hasOwnProperty(name)){

document.writeln(name+':'+obj[name]);

}

}