寫個bind

Function.prototype.myBind = function(obj){
    var fn = this;//獲取方法
    var args = Array.prototype.slice.call(arguments,1);//參數
    
    var returnFn = function(){
        var bindArgs = Array.prototype.slice.call(arguments);//調用參數
        return fn.apply(this instanceof returnFn ? this : obj,args.concat(bindArgs))//三元運算符用來判斷是不是用了new
        
    }

    var middleFn = function(){}//實現繼承
    middleFn.prototype = this.prototype;
    returnFn.prototype = new middleFn();
    return returnFn;
}

 

參考:https://github.com/yy9306/yy9306.github.io/issues/1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章