From 6bb89778b2f6b6ea8847a3f5d9c20b8eccd382a2 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Wed, 30 Oct 2013 09:20:56 -0700 Subject: [PATCH] Expose `_.noop`. [closes #380] --- lodash.js | 46 +++++++++++++++++++++++++++++----------------- test/test.js | 32 +++++++++++++++++++++++++------- 2 files changed, 54 insertions(+), 24 deletions(-) diff --git a/lodash.js b/lodash.js index 7ed6f86ca..3a640f00e 100644 --- a/lodash.js +++ b/lodash.js @@ -390,15 +390,6 @@ return typeof value.toString != 'function' && typeof (value + '') == 'string'; } - /** - * A no-operation function. - * - * @private - */ - function noop() { - // no operation performed - } - /** * Releases the given array back to the array pool. * @@ -1133,14 +1124,18 @@ } // fallback for browsers without `Object.create` if (!nativeCreate) { - baseCreate = function(prototype) { - if (isObject(prototype)) { - noop.prototype = prototype; - var result = new noop; - noop.prototype = null; - } - return result || {}; - }; + baseCreate = (function() { + function Object() {} + + return function(prototype) { + if (isObject(prototype)) { + Object.prototype = prototype; + var result = new Object; + Object.prototype = null; + } + return result || context.Object(); + }; + }()); } /** @@ -6134,6 +6129,22 @@ return this; } + /** + * A no-operation function. + * + * @static + * @memberOf _ + * @category Utilities + * @example + * + * var object = { 'name': 'fred' }; + * _.noop(object) === undefined; + * // => true + */ + function noop() { + // no operation performed + } + /** * Converts the given value into an integer of the specified radix. * If `radix` is `undefined` or `0` a `radix` of `10` is used unless the @@ -6754,6 +6765,7 @@ lodash.lastIndexOf = lastIndexOf; lodash.mixin = mixin; lodash.noConflict = noConflict; + lodash.noop = noop; lodash.parseInt = parseInt; lodash.random = random; lodash.reduce = reduce; diff --git a/test/test.js b/test/test.js index dd74fee81..5af6c6edf 100644 --- a/test/test.js +++ b/test/test.js @@ -3791,15 +3791,14 @@ } }); - test('should return `false` for non objects', 3, function() { - var expected = _.map(falsey, function() { return false; }); + test('should return `false` for non objects', 1, function() { + var values = falsey.concat('a', true), + expected = _.map(values, function() { return false; }); - var actual = _.map(falsey, function(value, index) { + var actual = _.map(values, function(value, index) { return index ? _.isObject(value) : _.isObject(); }); - strictEqual(_.isObject(true), false); - strictEqual(_.isObject('a'), false); deepEqual(actual, expected); }); @@ -4761,6 +4760,23 @@ /*--------------------------------------------------------------------------*/ + QUnit.module('lodash.noop'); + + (function() { + test('should always return `undefined`', 1, function() { + var values = falsey.concat([], true, new Date, _, {}, /x/, 'a'), + expected = _.map(values, function() { return undefined; }); + + var actual = _.map(values, function(value, index) { + return index ? _.noop(value) : _.noop(); + }); + + deepEqual(actual, expected); + }); + }()); + + /*--------------------------------------------------------------------------*/ + QUnit.module('lodash.omit'); (function() { @@ -5609,7 +5625,9 @@ expected = _.map(falsey, function() { return undefined; }); _.forEach(falsey, function(value, index) { - actual.push(index ? _.result(value) : _.result()); + try { + actual.push(index ? _.result(value) : _.result()); + } catch(e) { } }); deepEqual(actual, expected); @@ -7657,7 +7675,7 @@ var acceptFalsey = _.difference(allMethods, rejectFalsey); - test('should accept falsey arguments', 148, function() { + test('should accept falsey arguments', 149, function() { var isExported = '_' in root, oldDash = root._;