src/utils/fromJS.js
function hasOwnProperty(value, key) {
  if (value.hasOwnProperty && isFunction(value.hasOwnProperty)) {
    return value.hasOwnProperty(key);
  }

  if (value.prototype && value.prototype.hasOwnProperty) {
    return value.prototype.hasOwnProperty(key);
  }

  return false;
}
function hasOwnProperty(value, key) {
  if (value.hasOwnProperty && isFunction(value.hasOwnProperty)) {
    return value.hasOwnProperty(key);
  }

  if (value.prototype && value.prototype.hasOwnProperty) {
    return value.prototype.hasOwnProperty(key);
  }

  return false;
}
function hasOwnProperty ( value , key ) { if ( value . hasOwnProperty && isFunction ( value . hasOwnProperty ) ) { return value . hasOwnProperty ( key ) ; } if ( value . prototype && value . prototype . hasOwnProperty ) { return value . prototype . hasOwnProperty ( key ) ; } return false ; }
hasOwnProperty is defensive because it is possible that the object that we're creating a map for has a `hasOwnProperty` field
hasOwnProperty is defensive because it is possible that the object that we re creating a map for has a hasOwnProperty field