mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-09 02:17:50 +00:00
Allow _.before and _.after to accept func as the first argument
This commit is contained in:
16
lodash.js
16
lodash.js
@@ -5760,7 +5760,13 @@
|
|||||||
*/
|
*/
|
||||||
function after(n, func) {
|
function after(n, func) {
|
||||||
if (!isFunction(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;
|
n = nativeIsFinite(n = +n) ? n : 0;
|
||||||
return function() {
|
return function() {
|
||||||
@@ -5788,7 +5794,13 @@
|
|||||||
function before(n, func) {
|
function before(n, func) {
|
||||||
var result;
|
var result;
|
||||||
if (!isFunction(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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return function() {
|
return function() {
|
||||||
if (--n > 0) {
|
if (--n > 0) {
|
||||||
|
|||||||
24
test/test.js
24
test/test.js
@@ -800,6 +800,18 @@
|
|||||||
deepEqual(actual, expected);
|
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() {
|
test('should not set a `this` binding', 2, function() {
|
||||||
var after = _.after(1, function() { return ++this.count; }),
|
var after = _.after(1, function() { return ++this.count; }),
|
||||||
object = { 'count': 0, 'after': after };
|
object = { 'count': 0, 'after': after };
|
||||||
@@ -976,6 +988,18 @@
|
|||||||
deepEqual(actual, expected);
|
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() {
|
test('should not set a `this` binding', 2, function() {
|
||||||
var before = _.before(2, function() { return ++this.count; }),
|
var before = _.before(2, function() { return ++this.count; }),
|
||||||
object = { 'count': 0, 'before': before };
|
object = { 'count': 0, 'before': before };
|
||||||
|
|||||||
Reference in New Issue
Block a user