mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-08 18:17:48 +00:00
Fix _.createCallback perf regression.
Former-commit-id: a66821a2c4aa3bae626e19ef638a27689b96dc24
This commit is contained in:
7
build.js
7
build.js
@@ -1634,9 +1634,8 @@
|
|||||||
// remove `__bindData__` logic and `setBindData` function calls from `_.createCallback`
|
// remove `__bindData__` logic and `setBindData` function calls from `_.createCallback`
|
||||||
source = source.replace(matchFunction(source, 'createCallback'), function(match) {
|
source = source.replace(matchFunction(source, 'createCallback'), function(match) {
|
||||||
return match
|
return match
|
||||||
.replace(/^( *)var bindData *=[\s\S]+?\n\1}\n/m, '')
|
.replace(/(?:\s*\/\/.*)\n( *)var bindData *=[\s\S]+?\n\1}/, '')
|
||||||
.replace(/\s*\|\|\s*!bindData\b/, '')
|
.replace(/(?:\s*\/\/.*)\n( *)if *\(bindData[\s\S]+?\n\1}/, '');
|
||||||
.replace(/^( *)else if \(bindData[\s\S]+?\n\1}\n/m, '')
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return source;
|
return source;
|
||||||
@@ -2729,7 +2728,7 @@
|
|||||||
}
|
}
|
||||||
if (isLegacy || isMobile || isUnderscore) {
|
if (isLegacy || isMobile || isUnderscore) {
|
||||||
_.each(['createBound', 'createCallback'], function(funcName) {
|
_.each(['createBound', 'createCallback'], function(funcName) {
|
||||||
funcDependencyMap[funcName] = _.without(funcDependencyMap[funcName], 'bind', 'setBindData');
|
funcDependencyMap[funcName] = _.without(funcDependencyMap[funcName], 'setBindData');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (_.contains(plusFuncs, 'chain') == !isUnderscore) {
|
if (_.contains(plusFuncs, 'chain') == !isUnderscore) {
|
||||||
|
|||||||
18
lodash.js
18
lodash.js
@@ -4848,20 +4848,20 @@
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
var bindData = func.__bindData__;
|
// exit early if there is no `thisArg`
|
||||||
|
if (typeof thisArg == 'undefined') {
|
||||||
|
return func;
|
||||||
|
}
|
||||||
|
var bindData = !func.name || func.__bindData__;
|
||||||
if (typeof bindData == 'undefined') {
|
if (typeof bindData == 'undefined') {
|
||||||
// checks if `func` references the `this` keyword and stores the result
|
// checks if `func` references the `this` keyword and stores the result
|
||||||
bindData = !reThis || reThis.test(fnToString.call(func));
|
bindData = !reThis || reThis.test(fnToString.call(func));
|
||||||
setBindData(func, bindData);
|
setBindData(func, bindData);
|
||||||
}
|
}
|
||||||
if (typeof thisArg == 'undefined' || !bindData) {
|
// exit early if there are no `this` references or `func` is bound
|
||||||
|
if (bindData !== true && !(bindData && bindData[4])) {
|
||||||
return func;
|
return func;
|
||||||
}
|
}
|
||||||
else if (bindData !== true) {
|
|
||||||
// exit early if already bound or leverage bind optimizations if
|
|
||||||
// created by `_.partial` or `_.partialRight`
|
|
||||||
return bindData[4] ? bind(func, thisArg) : func;
|
|
||||||
}
|
|
||||||
switch (argCount) {
|
switch (argCount) {
|
||||||
case 1: return function(value) {
|
case 1: return function(value) {
|
||||||
return func.call(thisArg, value);
|
return func.call(thisArg, value);
|
||||||
@@ -4876,9 +4876,7 @@
|
|||||||
return func.call(thisArg, accumulator, value, index, collection);
|
return func.call(thisArg, accumulator, value, index, collection);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return function() {
|
return bind(func, thisArg);
|
||||||
return func.apply(thisArg, arguments);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user