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.

var warnAboutAccessingKey = function() {
    if (!specialPropKeyWarningShown) {
      specialPropKeyWarningShown = true;
      warning(
        false,
        '%s: `key` is not a prop. Trying to access it will result ' +
        'in `undefined` being returned. If you need to access the same ' +
        'value within the child component, you should pass it as a different ' +
        'prop. (https://fb.me/react-special-props)',
        displayName
      );
    }
  };
  warnAboutAccessingKey.isReactWarning = true;
  Object.defineProperty(props, 'key', {
    get: warnAboutAccessingKey,
    configurable: true,
  });
}
function defineRefPropWarningGetter(props, displayName) {
  var warnAboutAccessingRef = function() {
    if (!specialPropRefWarningShown) {
      specialPropRefWarningShown = true;