fn.apply(this, arr)

改变this 指向的方法有三种,

  1. call()
  2. applay()
  3. bind()

区别

fn.call()接收的是多个参数的形式,如: fn.call(this,参数1,参数2,参数3,,,)

fn.apply()接收的是一个参数数组,如: fn.apply(this, [参数1,参数2,参数3,,])

他们都会直接指向调用,

fn,bind(this, args) 的不会执行调用,需要这样做, let fun = fn

let fun = fn.bind(this, args);
fun() // 这样执行了,才调用。