123456789101112131415161718192021222324252627 |
- 'use strict';
- var toStr = Object.prototype.toString;
- var hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';
- if (hasSymbols) {
- var symToStr = Symbol.prototype.toString;
- var symStringRegex = /^Symbol\(.*\)$/;
- var isSymbolObject = function isSymbolObject(value) {
- if (typeof value.valueOf() !== 'symbol') { return false; }
- return symStringRegex.test(symToStr.call(value));
- };
- module.exports = function isSymbol(value) {
- if (typeof value === 'symbol') { return true; }
- if (toStr.call(value) !== '[object Symbol]') { return false; }
- try {
- return isSymbolObject(value);
- } catch (e) {
- return false;
- }
- };
- } else {
- module.exports = function isSymbol(value) {
- // this environment does not support Symbols.
- return false;
- };
- }
|