js bind源码,最后一句为什么要self.apply(....)?

0 0 javascript bind
aゞ特仑苏
aゞ特仑苏

声望值:97 0人

2019-03-12 09:46:25 提问

关注 0关注

收藏 0收藏, 105浏览

源码

Function.prototype.bind = Function.prototype.bind || function(context) {
  var that = this;
  return function() {
    return that.apply(context, arguments); // 这里为什么要用 that.apply,  作用是什么?
  }
} 

很疑惑,为什么要用that.apply, 仅仅是为了让bind返回一个func而不是一个结果?

请先 登录 后评论

4个回答

  • 爪哇程序猴323声望 2018-09-25 09:25

    可以绑定传入的this,也就是context; 调用bind返回的函数可以接收参数,也就是arguments
    请先 登录 后评论
  • Python//孤狼134声望 2018-09-25 09:25

    使用闭包把this保护了,外部就无法修改this了从而绑定this,apply主要为了传递参数
    请先 登录 后评论
  • Jenny203声望 2018-09-25 09:25

    that.apply(context,arguments)返回的是一个结果,会调用that函数,这里主要是改变上下文的,用that.call(context, ...arguments)也可以
    请先 登录 后评论
  • ERP↘CC195声望 2018-09-25 09:25

    返回的是一个匿名函数,用that代替this,是将当前上下文对象传入这个返回 匿名函数。如果用this的话。就是一个新的上下文。
    请先 登录 后评论

注册新账号

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问