Spaces:
Runtime error
Runtime error
var createCtor = require('./_createCtor'), | |
root = require('./_root'); | |
/** Used to compose bitmasks for function metadata. */ | |
var WRAP_BIND_FLAG = 1; | |
/** | |
* Creates a function that wraps `func` to invoke it with the optional `this` | |
* binding of `thisArg`. | |
* | |
* @private | |
* @param {Function} func The function to wrap. | |
* @param {number} bitmask The bitmask flags. See `createWrap` for more details. | |
* @param {*} [thisArg] The `this` binding of `func`. | |
* @returns {Function} Returns the new wrapped function. | |
*/ | |
function createBind(func, bitmask, thisArg) { | |
var isBind = bitmask & WRAP_BIND_FLAG, | |
Ctor = createCtor(func); | |
function wrapper() { | |
var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; | |
return fn.apply(isBind ? thisArg : this, arguments); | |
} | |
return wrapper; | |
} | |
module.exports = createBind; | |