Object.prototype.hasOwnProperty.call 那些事

Posted by Eric on November 9, 2017

为什么要这么使用?

  1. 有些Object可能是通过Object.create(null)创建的,其中包含null 原型链,也就是说不存在hasOwnProperty方法。
  2. 还有一种可能就是
var someObject = {
    hasOwnProperty: function(lol) {
        return true;
    }
};

如上面代码,对象的hasOwnProperty方法被重写。无法保证调用的hasOwnProperty方法是否被重写,是否是原生方法。

结论:

Object.prototype.hasOwnProperty.call 是最佳实践!!!