天天看点

JS编程建议——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]);

}

继续阅读