From 2c9fef32db5c9a342a1a60c34217ffc9ae087fbb Mon Sep 17 00:00:00 2001 From: Behnam Mohammadi Date: Thu, 1 Apr 2021 20:35:10 +0430 Subject: [PATCH] Remove redundant initial of hasOwnProperty (#21134) * remove redundant initial of hasOwnProperty * remove redundant initial of hasOwnProperty part 2 * remove redundant initial of hasOwnProperty part 3 --- packages/react-dom/src/client/ReactDOMComponent.js | 3 ++- .../src/server/ReactDOMServerFormatConfig.js | 2 +- .../react-dom/src/server/ReactPartialRenderer.js | 2 +- packages/react-dom/src/shared/DOMProperty.js | 2 +- .../react-dom/src/shared/ReactDOMInvalidARIAHook.js | 3 +-- .../src/shared/ReactDOMUnknownPropertyHook.js | 2 +- .../src/ReactFlightDOMRelayServerHostConfig.js | 4 ++-- .../src/ReactFlightNativeRelayServerHostConfig.js | 4 +--- packages/react/src/ReactElement.js | 3 +-- packages/react/src/ReactElementValidator.js | 3 +-- packages/react/src/jsx/ReactJSXElement.js | 4 +--- packages/react/src/jsx/ReactJSXElementValidator.js | 4 +--- packages/shared/checkPropTypes.js | 3 ++- packages/shared/hasOwnProperty.js | 12 ++++++++++++ packages/shared/shallowEqual.js | 3 +-- 15 files changed, 29 insertions(+), 25 deletions(-) create mode 100644 packages/shared/hasOwnProperty.js diff --git a/packages/react-dom/src/client/ReactDOMComponent.js b/packages/react-dom/src/client/ReactDOMComponent.js index 0356f6dc8ff44..095512b75b75c 100644 --- a/packages/react-dom/src/client/ReactDOMComponent.js +++ b/packages/react-dom/src/client/ReactDOMComponent.js @@ -13,6 +13,7 @@ import { } from '../events/EventRegistry'; import {canUseDOM} from 'shared/ExecutionEnvironment'; +import hasOwnProperty from 'shared/hasOwnProperty'; import { getValueForAttribute, @@ -443,7 +444,7 @@ export function createElement( !isCustomComponentTag && Object.prototype.toString.call(domElement) === '[object HTMLUnknownElement]' && - !Object.prototype.hasOwnProperty.call(warnedUnknownTags, type) + !hasOwnProperty.call(warnedUnknownTags, type) ) { warnedUnknownTags[type] = true; console.error( diff --git a/packages/react-dom/src/server/ReactDOMServerFormatConfig.js b/packages/react-dom/src/server/ReactDOMServerFormatConfig.js index 62f6d3ca56550..2988e9a588334 100644 --- a/packages/react-dom/src/server/ReactDOMServerFormatConfig.js +++ b/packages/react-dom/src/server/ReactDOMServerFormatConfig.js @@ -44,9 +44,9 @@ import warnValidStyle from '../shared/warnValidStyle'; import escapeTextForBrowser from './escapeTextForBrowser'; import hyphenateStyleName from '../shared/hyphenateStyleName'; import invariant from 'shared/invariant'; +import hasOwnProperty from 'shared/hasOwnProperty'; import sanitizeURL from '../shared/sanitizeURL'; -const hasOwnProperty = Object.prototype.hasOwnProperty; const isArray = Array.isArray; // Per response, global state that is not contextual to the rendering subtree. diff --git a/packages/react-dom/src/server/ReactPartialRenderer.js b/packages/react-dom/src/server/ReactPartialRenderer.js index 82296a933775c..4d2aeb5b38f81 100644 --- a/packages/react-dom/src/server/ReactPartialRenderer.js +++ b/packages/react-dom/src/server/ReactPartialRenderer.js @@ -77,6 +77,7 @@ import warnValidStyle from '../shared/warnValidStyle'; import {validateProperties as validateARIAProperties} from '../shared/ReactDOMInvalidARIAHook'; import {validateProperties as validateInputProperties} from '../shared/ReactDOMNullInputValuePropHook'; import {validateProperties as validateUnknownProperties} from '../shared/ReactDOMUnknownPropertyHook'; +import hasOwnProperty from 'shared/hasOwnProperty'; export type ServerOptions = { identifierPrefix?: string, @@ -340,7 +341,6 @@ function flattenOptionChildren(children: mixed): ?string { return content; } -const hasOwnProperty = Object.prototype.hasOwnProperty; const STYLE = 'style'; const RESERVED_PROPS = { children: null, diff --git a/packages/react-dom/src/shared/DOMProperty.js b/packages/react-dom/src/shared/DOMProperty.js index 3bf0fb5de2c00..92adf041d1964 100644 --- a/packages/react-dom/src/shared/DOMProperty.js +++ b/packages/react-dom/src/shared/DOMProperty.js @@ -8,6 +8,7 @@ */ import {enableFilterEmptyStringAttributesDOM} from 'shared/ReactFeatureFlags'; +import hasOwnProperty from 'shared/hasOwnProperty'; type PropertyType = 0 | 1 | 2 | 3 | 4 | 5 | 6; @@ -67,7 +68,6 @@ export const VALID_ATTRIBUTE_NAME_REGEX = new RegExp( '^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$', ); -const hasOwnProperty = Object.prototype.hasOwnProperty; const illegalAttributeNameCache = {}; const validatedAttributeNameCache = {}; diff --git a/packages/react-dom/src/shared/ReactDOMInvalidARIAHook.js b/packages/react-dom/src/shared/ReactDOMInvalidARIAHook.js index 89cc3f271fbba..f665b275ba5b4 100644 --- a/packages/react-dom/src/shared/ReactDOMInvalidARIAHook.js +++ b/packages/react-dom/src/shared/ReactDOMInvalidARIAHook.js @@ -8,13 +8,12 @@ import {ATTRIBUTE_NAME_CHAR} from './DOMProperty'; import isCustomComponent from './isCustomComponent'; import validAriaProperties from './validAriaProperties'; +import hasOwnProperty from 'shared/hasOwnProperty'; const warnedProperties = {}; const rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'); const rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$'); -const hasOwnProperty = Object.prototype.hasOwnProperty; - function validateProperty(tagName, name) { if (__DEV__) { if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) { diff --git a/packages/react-dom/src/shared/ReactDOMUnknownPropertyHook.js b/packages/react-dom/src/shared/ReactDOMUnknownPropertyHook.js index ad4be4b5fdea7..5070b844eb816 100644 --- a/packages/react-dom/src/shared/ReactDOMUnknownPropertyHook.js +++ b/packages/react-dom/src/shared/ReactDOMUnknownPropertyHook.js @@ -14,12 +14,12 @@ import { } from './DOMProperty'; import isCustomComponent from './isCustomComponent'; import possibleStandardNames from './possibleStandardNames'; +import hasOwnProperty from 'shared/hasOwnProperty'; let validateProperty = () => {}; if (__DEV__) { const warnedProperties = {}; - const hasOwnProperty = Object.prototype.hasOwnProperty; const EVENT_NAME_REGEX = /^on./; const INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/; const rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'); diff --git a/packages/react-server-dom-relay/src/ReactFlightDOMRelayServerHostConfig.js b/packages/react-server-dom-relay/src/ReactFlightDOMRelayServerHostConfig.js index 7ebcaf6b1e8d5..a4d0d26fcce14 100644 --- a/packages/react-server-dom-relay/src/ReactFlightDOMRelayServerHostConfig.js +++ b/packages/react-server-dom-relay/src/ReactFlightDOMRelayServerHostConfig.js @@ -13,6 +13,8 @@ import type {Request, ReactModel} from 'react-server/src/ReactFlightServer'; import JSResourceReference from 'JSResourceReference'; +import hasOwnProperty from 'shared/hasOwnProperty'; + export type ModuleReference = JSResourceReference; import type { @@ -72,8 +74,6 @@ export function processErrorChunk( ]; } -const hasOwnProperty = Object.prototype.hasOwnProperty; - function convertModelToJSON( request: Request, parent: {+[key: string]: ReactModel} | $ReadOnlyArray, diff --git a/packages/react-server-native-relay/src/ReactFlightNativeRelayServerHostConfig.js b/packages/react-server-native-relay/src/ReactFlightNativeRelayServerHostConfig.js index 8bf0cdf8b41ef..4fa871b0c4e8f 100644 --- a/packages/react-server-native-relay/src/ReactFlightNativeRelayServerHostConfig.js +++ b/packages/react-server-native-relay/src/ReactFlightNativeRelayServerHostConfig.js @@ -10,7 +10,7 @@ import type {RowEncoding, JSONValue} from './ReactFlightNativeRelayProtocol'; import type {Request, ReactModel} from 'react-server/src/ReactFlightServer'; - +import hasOwnProperty from 'shared/hasOwnProperty'; import JSResourceReferenceImpl from 'JSResourceReferenceImpl'; export type ModuleReference = JSResourceReferenceImpl; @@ -72,8 +72,6 @@ export function processErrorChunk( ]; } -const hasOwnProperty = Object.prototype.hasOwnProperty; - function convertModelToJSON( request: Request, parent: {+[key: string]: ReactModel} | $ReadOnlyArray, diff --git a/packages/react/src/ReactElement.js b/packages/react/src/ReactElement.js index 9747e0da1a12e..75017cba37aef 100644 --- a/packages/react/src/ReactElement.js +++ b/packages/react/src/ReactElement.js @@ -8,11 +8,10 @@ import getComponentNameFromType from 'shared/getComponentNameFromType'; import invariant from 'shared/invariant'; import {REACT_ELEMENT_TYPE} from 'shared/ReactSymbols'; +import hasOwnProperty from 'shared/hasOwnProperty'; import ReactCurrentOwner from './ReactCurrentOwner'; -const hasOwnProperty = Object.prototype.hasOwnProperty; - const RESERVED_PROPS = { key: true, ref: true, diff --git a/packages/react/src/ReactElementValidator.js b/packages/react/src/ReactElementValidator.js index 1ee89ef142177..2c14bef6c0201 100644 --- a/packages/react/src/ReactElementValidator.js +++ b/packages/react/src/ReactElementValidator.js @@ -33,6 +33,7 @@ import { } from './ReactElement'; import {setExtraStackFrame} from './ReactDebugCurrentFrame'; import {describeUnknownElementTypeFrameInDEV} from 'shared/ReactComponentStackFrame'; +import hasOwnProperty from 'shared/hasOwnProperty'; function setCurrentlyValidatingElement(element) { if (__DEV__) { @@ -56,8 +57,6 @@ if (__DEV__) { propTypesMisspellWarningShown = false; } -const hasOwnProperty = Object.prototype.hasOwnProperty; - function getDeclarationErrorAddendum() { if (ReactCurrentOwner.current) { const name = getComponentNameFromType(ReactCurrentOwner.current.type); diff --git a/packages/react/src/jsx/ReactJSXElement.js b/packages/react/src/jsx/ReactJSXElement.js index ccf2c6e2a4002..e87a969712e1e 100644 --- a/packages/react/src/jsx/ReactJSXElement.js +++ b/packages/react/src/jsx/ReactJSXElement.js @@ -7,13 +7,11 @@ import getComponentNameFromType from 'shared/getComponentNameFromType'; import ReactSharedInternals from 'shared/ReactSharedInternals'; - +import hasOwnProperty from 'shared/hasOwnProperty'; import {REACT_ELEMENT_TYPE} from 'shared/ReactSymbols'; const ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner; -const hasOwnProperty = Object.prototype.hasOwnProperty; - const RESERVED_PROPS = { key: true, ref: true, diff --git a/packages/react/src/jsx/ReactJSXElementValidator.js b/packages/react/src/jsx/ReactJSXElementValidator.js index 6ee1c7176f498..c77b5ef6e9a6f 100644 --- a/packages/react/src/jsx/ReactJSXElementValidator.js +++ b/packages/react/src/jsx/ReactJSXElementValidator.js @@ -22,7 +22,7 @@ import { REACT_ELEMENT_TYPE, } from 'shared/ReactSymbols'; import {warnAboutSpreadingKeyToJSX} from 'shared/ReactFeatureFlags'; - +import hasOwnProperty from 'shared/hasOwnProperty'; import {jsxDEV} from './ReactJSXElement'; import {describeUnknownElementTypeFrameInDEV} from 'shared/ReactComponentStackFrame'; @@ -54,8 +54,6 @@ if (__DEV__) { propTypesMisspellWarningShown = false; } -const hasOwnProperty = Object.prototype.hasOwnProperty; - /** * Verifies the object is a ReactElement. * See https://reactjs.org/docs/react-api.html#isvalidelement diff --git a/packages/shared/checkPropTypes.js b/packages/shared/checkPropTypes.js index eb067fb4c0878..1558a407c3888 100644 --- a/packages/shared/checkPropTypes.js +++ b/packages/shared/checkPropTypes.js @@ -12,6 +12,7 @@ const loggedTypeFailures = {}; import {describeUnknownElementTypeFrameInDEV} from 'shared/ReactComponentStackFrame'; import ReactSharedInternals from 'shared/ReactSharedInternals'; +import hasOwnProperty from 'shared/hasOwnProperty'; const ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; @@ -40,7 +41,7 @@ export default function checkPropTypes( ): void { if (__DEV__) { // $FlowFixMe This is okay but Flow doesn't know it. - const has = Function.call.bind(Object.prototype.hasOwnProperty); + const has = Function.call.bind(hasOwnProperty); for (const typeSpecName in typeSpecs) { if (has(typeSpecs, typeSpecName)) { let error; diff --git a/packages/shared/hasOwnProperty.js b/packages/shared/hasOwnProperty.js new file mode 100644 index 0000000000000..2751eda737b24 --- /dev/null +++ b/packages/shared/hasOwnProperty.js @@ -0,0 +1,12 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + */ + +const hasOwnProperty = Object.prototype.hasOwnProperty; + +export default hasOwnProperty; diff --git a/packages/shared/shallowEqual.js b/packages/shared/shallowEqual.js index 8ff87431e0a9a..92c66e5a1ece6 100644 --- a/packages/shared/shallowEqual.js +++ b/packages/shared/shallowEqual.js @@ -8,8 +8,7 @@ */ import is from './objectIs'; - -const hasOwnProperty = Object.prototype.hasOwnProperty; +import hasOwnProperty from './hasOwnProperty'; /** * Performs equality by iterating through keys on an object and returning false