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.
20 lines
592 B
20 lines
592 B
"use strict"; |
|
|
|
var getPrototypeOf = Object.getPrototypeOf |
|
, prototype = Object.prototype |
|
, objToString = prototype.toString |
|
, id = Object().toString(); |
|
|
|
module.exports = function (value) { |
|
var proto, valueConstructor; |
|
if (!value || typeof value !== "object" || objToString.call(value) !== id) { |
|
return false; |
|
} |
|
proto = getPrototypeOf(value); |
|
if (proto === null) { |
|
valueConstructor = value.constructor; |
|
if (typeof valueConstructor !== "function") return true; |
|
return valueConstructor.prototype !== value; |
|
} |
|
return proto === prototype || getPrototypeOf(proto) === null; |
|
};
|
|
|