1234567891011121314151617181920212223242526272829303132333435 |
- '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;
- };
- }
|