Optimize _.isBoolean, _.isNumber, and _.isString for the false case.

This commit is contained in:
John-David Dalton
2013-10-17 23:59:02 -07:00
parent 31e86a36f8
commit c30460df4c
7 changed files with 73 additions and 65 deletions

26
dist/lodash.js vendored
View File

@@ -2086,7 +2086,8 @@
* // => false
*/
function isBoolean(value) {
return value === true || value === false || toString.call(value) == boolClass;
return value === true || value === false ||
value && typeof value == 'object' && toString.call(value) == boolClass || false;
}
/**
@@ -2103,7 +2104,7 @@
* // => true
*/
function isDate(value) {
return value ? (typeof value == 'object' && toString.call(value) == dateClass) : false;
return value && typeof value == 'object' && toString.call(value) == dateClass || false;
}
/**
@@ -2120,7 +2121,7 @@
* // => true
*/
function isElement(value) {
return value ? value.nodeType === 1 : false;
return value && value.nodeType === 1 || false;
}
/**
@@ -2348,7 +2349,8 @@
* // => true
*/
function isNumber(value) {
return typeof value == 'number' || toString.call(value) == numberClass;
return typeof value == 'number' ||
value && typeof value == 'object' && toString.call(value) == numberClass || false;
}
/**
@@ -2401,7 +2403,7 @@
* // => true
*/
function isRegExp(value) {
return value ? (typeof value == 'object' && toString.call(value) == regexpClass) : false;
return value && typeof value == 'object' && toString.call(value) == regexpClass || false;
}
/**
@@ -2418,7 +2420,8 @@
* // => true
*/
function isString(value) {
return typeof value == 'string' || toString.call(value) == stringClass;
return typeof value == 'string' ||
value && typeof value == 'object' && toString.call(value) == stringClass || false;
}
/**
@@ -5557,12 +5560,11 @@
* @returns {Function} Returns the new function.
* @example
*
* var hello = function(name) { return 'hello ' + name; };
* hello = _.wrap(hello, function(func) {
* return 'before, ' + func('fred') + ', after';
* var pre= _.wrap(_.escape, function(func, text) {
* return '<div>' + func(text) + '</div>';
* });
* hello();
* // => 'before, hello fred, after'
* pre('Fred, Wilma, & Pebbles');
* // => '<div>Fred, Wilma, &amp; Pebbles</div>'
*/
function wrap(value, wrapper) {
if (!isFunction(wrapper)) {
@@ -5606,7 +5608,7 @@
* @example
*
* var object = { 'name': 'fred' };
* object === _.identity(object);
* _.identity(object) === object;
* // => true
*/
function identity(value) {