123456789101112131415161718192021222324252627282930313233343536 |
- 'use strict';
- var toStr = Object.prototype.toString;
- var hasSymbols = require('has-symbols')();
- if (hasSymbols) {
- var symToStr = Symbol.prototype.toString;
- var symStringRegex = /^Symbol\(.*\)$/;
- var isSymbolObject = function isRealSymbolObject(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 && value;
- };
- }
|