| 'use strict'; |
| |
| var strValue = String.prototype.valueOf; |
| var tryStringObject = function tryStringObject(value) { |
| try { |
| strValue.call(value); |
| return true; |
| } catch (e) { |
| return false; |
| } |
| }; |
| var toStr = Object.prototype.toString; |
| var strClass = '[object String]'; |
| var hasToStringTag = require('has-tostringtag/shams')(); |
| |
| module.exports = function isString(value) { |
| if (typeof value === 'string') { |
| return true; |
| } |
| if (typeof value !== 'object') { |
| return false; |
| } |
| return hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass; |
| }; |