鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ js bind源碼,最后一句為什么要self.apply(....)?

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

源碼

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

很疑惑,為什么要用that.apply, 僅僅是為了讓bind返回一個(gè)func而不是一個(gè)結(jié)果?

回答
編輯回答
孤星
  1. 可以綁定傳入的this,也就是context;
  2. 調(diào)用bind返回的函數(shù)可以接收參數(shù),也就是arguments
2018年3月3日 11:05
編輯回答
小曖昧

that.apply(context,arguments)返回的是一個(gè)結(jié)果,會(huì)調(diào)用that函數(shù),這里主要是改變上下文的,用that.call(context, ...arguments)也可以

2017年5月7日 14:02
編輯回答
孤星

使用閉包把this保護(hù)了,外部就無法修改this了從而綁定this,apply主要為了傳遞參數(shù)

2018年5月16日 07:47
編輯回答
小眼睛

返回的是一個(gè)匿名函數(shù),用that代替this,是將當(dāng)前上下文對(duì)象傳入這個(gè)返回 匿名函數(shù)。如果用this的話。就是一個(gè)新的上下文。

2017年12月8日 20:16