对箭头函数使用 bind这类函数是无效的
不管我们给函数 bind 几次,fn 中的 this 永远由第一次 bind 决定,所以结果永远是 window
let a = {}
let fn = function () { console.log(this) }
fn.bind().bind(a)() // => ?// fn.bind().bind(a) 等于
let fn2 = function fn1() {
return function() {
return fn.apply()
}.apply(a)
}
fn2()多种规则优先级
首先,new 的方式优先级最高,接下来是 bind 这些函数,然后是 obj.foo() 这种调用方式,最后是 foo全局调用 这种调用方式,同时,箭头函数的 this 一旦被绑定,就不会再被任何方式所改变。

京公网安备 11010502036488号