| 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; |