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