23 lines
622 B
JavaScript
23 lines
622 B
JavaScript
|
var createCtorWrapper = require('./createCtorWrapper');
|
||
|
|
||
|
/**
|
||
|
* Creates a function that wraps `func` and invokes it with the `this`
|
||
|
* binding of `thisArg`.
|
||
|
*
|
||
|
* @private
|
||
|
* @param {Function} func The function to bind.
|
||
|
* @param {*} [thisArg] The `this` binding of `func`.
|
||
|
* @returns {Function} Returns the new bound function.
|
||
|
*/
|
||
|
function createBindWrapper(func, thisArg) {
|
||
|
var Ctor = createCtorWrapper(func);
|
||
|
|
||
|
function wrapper() {
|
||
|
var fn = (this && this !== global && this instanceof wrapper) ? Ctor : func;
|
||
|
return fn.apply(thisArg, arguments);
|
||
|
}
|
||
|
return wrapper;
|
||
|
}
|
||
|
|
||
|
module.exports = createBindWrapper;
|