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