if JS wrapper objects are considered bad style, is type-checking with lodash _.isString etc. considered bad style as well? <p>As other questions and answers have already noted, Google and Douglas Crockford both consider JS wrapper objects bad style and shouldn't be used.</p> <p>If that's the case, should using lodash <code>_.isString</code>, which works for primitive and object-wrapped strings, just to check if something is a string, be considered bad style as well?</p> <p>It seems to me some lodash functions such as these are designed primarily to be used for functional programming, e.g. <code>_.filter(myArray, _.isString)</code>, but if one is following best practices of using only primitive strings, a simple <code>typeof</code> check would suffice for the implementation.</p> <p>But the lodash code for <code>_.isString</code> does much more than that:</p> <pre><code> /** * Checks if `value` is classified as a `String` primitive or object. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. * @example * * _.isString('abc'); * // =&gt; true * * _.isString(1); * // =&gt; false */ function isString(value) { return typeof value == 'string' || (!isArray(value) &amp;&amp; isObjectLike(value) &amp;&amp; objectToString.call(value) == stringTag); } </code></pre> <p>What was the motivation for this? Users who use object wrappers complaining that the lodash methods didn't work on them?</p>