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]);
}
}