javascript - 利用apply实现bind的问题?

查看:94
本文介绍了javascript - 利用apply实现bind的问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

这段代码是《javascript设计模式与开发实践》中第二章关于实现bind方法的代码。

Function.prototype.bind = function (obj) {
    var self = this;//保存调用的函数。
    return function(){
       return self.apply(obj,arguments);
    }
  };
  var obj = {
    name:'seven'
  };
  var func = function () {
    console.log(this.name);
  }.bind(obj);
  func();

我不理解的是

bind(obj);

这句调用为什么没有直接执行func函数?
因为在他的实现中有一句

return self.apply(obj,arguments);
这句话不会执行函数么?

而是要等到func();的时候才执行console.log()

解决方案

Function.prototype.bind = function (obj) {
  var self = this;//保存调用的函数。
  return function(){
    return self.apply(obj,arguments);
  }
};

bind方法返回的是一个带闭包的匿名函数啊。

然后在func();时候再执行的这个匿名函数,里面的apply方法这一串方法

这篇关于javascript - 利用apply实现bind的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆