heyujie
2021-06-07 8f8155aa4c83f7c2577ac123add550766b6a7ce3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
"use strict";
 
var isObject    = require("../object/is")
  , isPrototype = require("../prototype/is");
 
var getPrototypeOf;
if (typeof Object.getPrototypeOf === "function") {
    getPrototypeOf = Object.getPrototypeOf;
} else if ({}.__proto__ === Object.prototype) {
    getPrototypeOf = function (object) { return object.__proto__; };
}
 
module.exports = function (value) {
    if (!isObject(value)) return false;
    var prototype;
    if (getPrototypeOf) {
        prototype = getPrototypeOf(value);
    } else {
        try {
            var valueConstructor = value.constructor;
            if (valueConstructor) prototype = valueConstructor.prototype;
        } catch (error) {
            return false;
        }
    }
    if (prototype && !hasOwnProperty.call(prototype, "propertyIsEnumerable")) return false;
    return !isPrototype(value);
};