| '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); |
| }; |