UNPKG

2.3 kBJavaScriptView Raw
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. */
11var stringTag = '[object String]';
12
13/** Used for built-in method references. */
14var 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 */
20var 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 */
45var 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 */
70function 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 */
90function isString(value) {
91 return typeof value == 'string' ||
92 (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
93}
94
95module.exports = isString;