手写Function.prototype.bind练习

if(!Function.prototype.bind){
        Function.prototype.bind = function (oThis){
            if(typeof this != 'function'){
                throw TypeError("Function.prototype.bind-what is trying"+" to be bound is not callable");
            }
            var aArgs = Array.prototype.slice.call(arguments,1),
                fToBind = this,
                fNOP = function (){},
                fBound = function (){
                    return fToBind.apply(this instanceof fNOP && oThis ? this:oThis,aArgs.concat(Array.prototype.slice(arguments)));
                }

                fNOP.prototype = this.prototype;
                fBound.prototype = new fNOP();
                return fBound;
        };
    }

你可能感兴趣的:(手写Function.prototype.bind练习)