在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/網絡安全  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返回一個func而不是一個結果?

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

that.apply(context,arguments)返回的是一個結果,會調用that函數,這里主要是改變上下文的,用that.call(context, ...arguments)也可以

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

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

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

返回的是一個匿名函數,用that代替this,是將當前上下文對象傳入這個返回 匿名函數。如果用this的話。就是一個新的上下文。

2017年12月8日 20:16