00001 var createCtor = require('./_createCtor'), 00002 root = require('./_root'); 00003 00005 var WRAP_BIND_FLAG = 1; 00006 00017 function createBind(func, bitmask, thisArg) { 00018 var isBind = bitmask & WRAP_BIND_FLAG, 00019 Ctor = createCtor(func); 00020 00021 function wrapper() { 00022 var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; 00023 return fn.apply(isBind ? thisArg : this, arguments); 00024 } 00025 return wrapper; 00026 } 00027 00028 module.exports = createBind;