|
|
'use strict'; |
|
|
|
|
|
var setFunctionLength = require('set-function-length'); |
|
|
|
|
|
var $defineProperty = require('es-define-property'); |
|
|
|
|
|
var callBindBasic = require('call-bind-apply-helpers'); |
|
|
var applyBind = require('call-bind-apply-helpers/applyBind'); |
|
|
|
|
|
module.exports = function callBind(originalFunction) { |
|
|
var func = callBindBasic(arguments); |
|
|
var adjustedLength = originalFunction.length - (arguments.length - 1); |
|
|
return setFunctionLength( |
|
|
func, |
|
|
1 + (adjustedLength > 0 ? adjustedLength : 0), |
|
|
true |
|
|
); |
|
|
}; |
|
|
|
|
|
if ($defineProperty) { |
|
|
$defineProperty(module.exports, 'apply', { value: applyBind }); |
|
|
} else { |
|
|
module.exports.apply = applyBind; |
|
|
} |
|
|
|