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.
27 lines
921 B
27 lines
921 B
"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;
|
|
|