summaryrefslogtreecommitdiff
path: root/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/object/is-plain-object.js
blob: 9a2823198e746ff49a7bc8257565c711e416486d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'use strict';

var getPrototypeOf = Object.getPrototypeOf, prototype = Object.prototype
  , toString = prototype.toString

  , id = Object().toString();

module.exports = function (value) {
	var proto, constructor;
	if (!value || (typeof value !== 'object') || (toString.call(value) !== id)) {
		return false;
	}
	proto = getPrototypeOf(value);
	if (proto === null) {
		constructor = value.constructor;
		if (typeof constructor !== 'function') return true;
		return (constructor.prototype !== value);
	}
	return (proto === prototype) || (getPrototypeOf(proto) === null);
};