| "use strict"; |
| |
| var functionName = require("./function-name"); |
| |
| /** |
| * Returns a display name for a value from a constructor |
| * |
| * @param {object} value A value to examine |
| * @returns {(string|null)} A string or null |
| */ |
| function className(value) { |
| return ( |
| (value.constructor && value.constructor.name) || |
| // The next branch is for IE11 support only: |
| // Because the name property is not set on the prototype |
| // of the Function object, we finally try to grab the |
| // name from its definition. This will never be reached |
| // in node, so we are not able to test this properly. |
| // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name |
| (typeof value.constructor === "function" && |
| /* istanbul ignore next */ |
| functionName(value.constructor)) || |
| null |
| ); |
| } |
| |
| module.exports = className; |