why Object.hasOwnProperty.call(object, key) code example

Example 1: hasownproperty.call

var foo = {
  hasOwnProperty: function() {
    return false;
  },
  bar: 'Here be dragons'
};

foo.hasOwnProperty('bar'); // always returns false

// Use another Object's hasOwnProperty
// and call it with 'this' set to foo
({}).hasOwnProperty.call(foo, 'bar'); // true

// It's also possible to use the hasOwnProperty property
// from the Object prototype for this purpose
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true

Example 2: hasOwnProperty.call js

var foo = {
  hasOwnProperty: function() {
    return false;
  },
  bar: 'I belong to foo'
};