编写高质量的js之不要信任hasOwnProperty吗

2025-06-24 08:22:28
推荐回答(1个)
回答1:

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

  }

  }