code: 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;
  }
docs: hasOwnProperty is defensive because it is possible that the object that we're creating a map for has a `hasOwnProperty` field