You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
775 B

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