Add _#toString and _#valueOf.

Former-commit-id: adb194b6270fc72f794c69343891a2e891b90051
This commit is contained in:
John-David Dalton
2012-11-18 21:50:41 -08:00
parent 20630aeb47
commit 819d4abaa2
4 changed files with 48 additions and 1 deletions

View File

@@ -1413,6 +1413,9 @@
// remove conditional `charCodeCallback` use from `_.max` and `_.min` // remove conditional `charCodeCallback` use from `_.max` and `_.min`
source = source.replace(/!callback *&& *isString\(collection\)[\s\S]+?: */g, ''); source = source.replace(/!callback *&& *isString\(collection\)[\s\S]+?: */g, '');
// remove `lodash.prototype.toString` and `lodash.prototype.valueOf` assignments
source = source.replace(/ *lodash\.prototype\.(?:toString|valueOf) *=.+\n/g, '');
// remove unused features from `createBound` // remove unused features from `createBound`
if (buildMethods.indexOf('partial') == -1) { if (buildMethods.indexOf('partial') == -1) {
source = source.replace(matchFunction(source, 'createBound'), function(match) { source = source.replace(matchFunction(source, 'createBound'), function(match) {

View File

@@ -4043,6 +4043,22 @@
return this; return this;
} }
/**
* Produces the `toString` result of the wrapped value.
*
* @name toString
* @memberOf _
* @category Chaining
* @returns {String} Returns the string result.
* @example
*
* _([1, 2, 3]).toString();
* // => '1,2,3'
*/
function wrapperToString() {
return String(this.__wrapped__);
}
/** /**
* Extracts the wrapped value. * Extracts the wrapped value.
* *
@@ -4196,7 +4212,9 @@
// add `lodash.prototype.chain` after calling `mixin()` to avoid overwriting // add `lodash.prototype.chain` after calling `mixin()` to avoid overwriting
// it with the wrapped `lodash.chain` // it with the wrapped `lodash.chain`
lodash.prototype.chain = wrapperChain; lodash.prototype.chain = wrapperChain;
lodash.prototype.toString = wrapperToString;
lodash.prototype.value = wrapperValue; lodash.prototype.value = wrapperValue;
lodash.prototype.valueOf = wrapperValue;
// add all mutator Array functions to the wrapper. // add all mutator Array functions to the wrapper.
forEach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(methodName) { forEach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {

View File

@@ -694,7 +694,11 @@
equal(lodash.some([false, true, false]), true, '_.some: ' + basename); equal(lodash.some([false, true, false]), true, '_.some: ' + basename);
equal(lodash.template('${a}', object), '${a}', '_.template should ignore ES6 delimiters: ' + basename); equal(lodash.template('${a}', object), '${a}', '_.template should ignore ES6 delimiters: ' + basename);
equal(lodash(1).clone() instanceof lodash, false, '_(...) wrapped values are not chainable by default: ' + basename);
object = lodash(1);
equal(object.clone() instanceof lodash, false, '_(...) wrapped values are not chainable by default: ' + basename);
equal(String(object) === '1', false, '_.prototype should not implement its own `toString` method: ' + basename);
equal(Number(object) === 1 , false, '_.prototype should not implement its own `valueOf` method: ' + basename);
start(); start();
}); });

View File

@@ -1922,6 +1922,28 @@
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
QUnit.module('lodash(...).toString');
(function() {
test('should return the `toString` result of the wrapped value', function() {
var wrapped = _([1, 2, 3]);
equal(String(wrapped), '1,2,3');
});
}());
/*--------------------------------------------------------------------------*/
QUnit.module('lodash(...).valueOf');
(function() {
test('should return the `valueOf` result of the wrapped value', function() {
var wrapped = _(123);
equal(Number(wrapped), 123);
});
}());
/*--------------------------------------------------------------------------*/
QUnit.module('lodash methods'); QUnit.module('lodash methods');
(function() { (function() {