There is a bug in the logic for determining if `props` is a plain object. This bug results in a false positive, flooding the console with hundreds of instances of this warning: "Expected props argument to be a plain object. Properties defined in its prototype chain will be ignored.".

The code that's failing is in [ReactElement.js, Line 210 in the v15.3.1 branch](https://github.com/facebook/react/blob/v15.3.1/src/isomorphic/classic/element/ReactElement.js#L210) (line number is probably different in master)

> config.**proto** == null || config.**proto** === Object.prototype,

This fails when the props object is created in one iframe, but uses an instance of React from another frame. Each browser window/tab/frame has it's own instance of the Object constructor. For instance, `document.querySelector('iframe').contentWindow.Object === Object` always results in `false`.

Check out this [demo](https://jsfiddle.net/05ugxo5f/4/), which shows the false-positive warning message.

);
      },
    });
    ReactTestUtils.renderIntoDocument(React.createElement(GrandParent));
    expect(console.error.calls.count()).toBe(1);
    expect(console.error.calls.argsFor(0)[0]).toBe(
      'Warning: Failed prop type: ' +
      'Invalid prop `color` of type `number` supplied to `Component`, ' +
      'expected `string`.\n' +
      '    in Component (created by GrandParent)\n' +
      '    in Parent (created by GrandParent)\n' +
      '    in GrandParent'
    );
  });
  it('should ignore key and ref warning getters', () => {
    var elementA = React.createElement('div');
    var elementB = React.cloneElement(elementA, elementA.props);
    expect(elementB.key).toBe(null);
    expect(elementB.ref).toBe(null);
  });
  it('should ignore undefined key and ref', () => {
    var element = React.createFactory(ComponentClass)({
      key: '12',
      ref: '34',
      foo: '56',
    });
    var props = {
      key: undefined,
      ref: undefined,
      foo: 'ef',