index.js
 1  /**
 2   * lodash 4.0.1 (Custom Build) <https://lodash.com/>
 3   * Build: `lodash modularize exports="npm" -o ./`
 4   * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
 5   * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
 6   * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
 7   * Available under MIT license <https://lodash.com/license>
 8   */
 9  
10  /** `Object#toString` result references. */
11  var stringTag = '[object String]';
12  
13  /** Used for built-in method references. */
14  var objectProto = Object.prototype;
15  
16  /**
17   * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
18   * of values.
19   */
20  var objectToString = objectProto.toString;
21  
22  /**
23   * Checks if `value` is classified as an `Array` object.
24   *
25   * @static
26   * @memberOf _
27   * @type Function
28   * @category Lang
29   * @param {*} value The value to check.
30   * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
31   * @example
32   *
33   * _.isArray([1, 2, 3]);
34   * // => true
35   *
36   * _.isArray(document.body.children);
37   * // => false
38   *
39   * _.isArray('abc');
40   * // => false
41   *
42   * _.isArray(_.noop);
43   * // => false
44   */
45  var isArray = Array.isArray;
46  
47  /**
48   * Checks if `value` is object-like. A value is object-like if it's not `null`
49   * and has a `typeof` result of "object".
50   *
51   * @static
52   * @memberOf _
53   * @category Lang
54   * @param {*} value The value to check.
55   * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
56   * @example
57   *
58   * _.isObjectLike({});
59   * // => true
60   *
61   * _.isObjectLike([1, 2, 3]);
62   * // => true
63   *
64   * _.isObjectLike(_.noop);
65   * // => false
66   *
67   * _.isObjectLike(null);
68   * // => false
69   */
70  function isObjectLike(value) {
71    return !!value && typeof value == 'object';
72  }
73  
74  /**
75   * Checks if `value` is classified as a `String` primitive or object.
76   *
77   * @static
78   * @memberOf _
79   * @category Lang
80   * @param {*} value The value to check.
81   * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
82   * @example
83   *
84   * _.isString('abc');
85   * // => true
86   *
87   * _.isString(1);
88   * // => false
89   */
90  function isString(value) {
91    return typeof value == 'string' ||
92      (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
93  }
94  
95  module.exports = isString;