开发者社区> 问答> 正文

js中的bind

求大神解释下js中的bind的用法,他和call和apply都有哪些区别

展开
收起
a123456678 2016-03-12 14:53:56 2333 0
1 条回答
写回答
取消 提交回答
  • 先来个总结

    apply 、 call 、bind 三者都是用来改变函数的this对象的指向的; 
    apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文; 
    apply 、 call 、bind 三者都可以利用后续参数传参; 
    bind是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。
    绑定bind的ES3实现
    
    if(!Function.prototype.bind){
        Function.prototype.bind = function(o, args){
            
            var self = this,
                boundArgs = arguments;
            
            return function(){                 //此时返回的只是一个函数
                var args = [], i;
                for(var i=1; i< boundArgs.length; i++){  
                     args.push(boundArgs[i]);
                }
                for(var i =0; i< arguments.length; i++){
                     args.push(arguments[i]);
                }
                return self.apply(o, args);    
            }
    
        }
    
    }
    var sum = function(x,y){ return x+y };
    var result = sum.bind(null,1);
    result(2);   // 3
    2019-07-17 19:00:55
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JavaScript异步编程 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载