Allow _.before and _.after to accept func as the first argument

This commit is contained in:
John-David Dalton
2014-09-01 17:11:23 -07:00
parent 0d6279617b
commit debaed6e5e
2 changed files with 38 additions and 2 deletions

View File

@@ -5760,7 +5760,13 @@
*/
function after(n, func) {
if (!isFunction(func)) {
throw new TypeError(FUNC_ERROR_TEXT);
if (isFunction(n)) {
var temp = n;
n = func;
func = temp;
} else {
throw new TypeError(FUNC_ERROR_TEXT);
}
}
n = nativeIsFinite(n = +n) ? n : 0;
return function() {
@@ -5788,7 +5794,13 @@
function before(n, func) {
var result;
if (!isFunction(func)) {
throw new TypeError(FUNC_ERROR_TEXT);
if (isFunction(n)) {
var temp = n;
n = func;
func = temp;
} else {
throw new TypeError(FUNC_ERROR_TEXT);
}
}
return function() {
if (--n > 0) {

View File

@@ -800,6 +800,18 @@
deepEqual(actual, expected);
});
test('should allow `func` as the first argument', 1, function() {
var count = 0;
try {
var after = _.after(function() { count++; }, 1);
after();
after();
} catch(e) {}
strictEqual(count, 2);
});
test('should not set a `this` binding', 2, function() {
var after = _.after(1, function() { return ++this.count; }),
object = { 'count': 0, 'after': after };
@@ -976,6 +988,18 @@
deepEqual(actual, expected);
});
test('should allow `func` as the first argument', 1, function() {
var count = 0;
try {
var before = _.before(function() { count++; }, 2);
before();
before();
} catch(e) {}
strictEqual(count, 1);
});
test('should not set a `this` binding', 2, function() {
var before = _.before(2, function() { return ++this.count; }),
object = { 'count': 0, 'before': before };