用apply实现bind

  • Post author:
  • Post category:其他



这是秋招过程中的一道笔试题,让用apply实现bind。


bind()也是用来


实现上下文绑定


。bind()和call与apply不同。


bind


是新创建一个函数,然后把它的上下文绑定到


bind()


括号中的参数上,然后将它返回




所以,


bind


后函数不会执行,而只是返回一个改变了上下文的函数副本,而


call





apply


是直接执行函数。


bind()的用法

var button =document.getElementById("button"),
   text = document.getElementById("text");
button.onclick = function() {
   alert(this.id); // 弹出text
}.bind(text);


用apply()实现bind()


if (!function() {}.bind) {
    Function.prototype.bind = function(context) {
        var self = this,
       args = Array.prototype.slice.call(arguments);
           
        return function() {
            return self.apply(context, args.slice(1));   
        }
    };
}



版权声明:本文为sunlijie1118原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。