This is a bug in `React.createElement` code:

`React.createElement` does not warn if `props.__proto__` is null ( from `Object.create(null)` ) since it [believes that to be a plain object](https://github.com/facebook/react/blob/master/src/isomorphic/classic/element/ReactElement.js#L135) originating from #6134. But since it directly accesses `hasOwnProperty` it fails if such object is passed as props.

Reproduce:

``` js
const props = Object.create(null);
React.createElement(() => null, props);
```

**What is the expected behavior?**
It shouldn't use `hasOwnProperty` directly on props if such object is expected.

React: 15.1.0
Browsers: All
OS: All

This affects all versions of React but since after 15.1.0 the acceptable shape of props is explicitly defined then it should be explicitly supported as well.

},
    });
    var Parent = React.createClass({
      render: function() {
        return (
          <div>
            <Child ref="childElement" />
          </div>
        );
      },
    });
    expect(console.error.calls.length).toBe(0);
    ReactDOM.render(<Parent />, container);
    expect(console.error.calls.length).toBe(1);
    expect(console.error.argsForCall[0][0]).toContain(
      'Child: `ref` 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)'
    );
  });
  it('allows a string to be passed as the type', function() {
    var element = React.createFactory('div')();
    expect(element.type).toBe('div');
    expect(element.key).toBe(null);
    expect(element.ref).toBe(null);
    var expectation = {};
    Object.freeze(expectation);
    expect(element.props).toEqual(expectation);
  });