这篇文章主要总结了 javascript 各种情形中,怎么分析 this 的值是什么,以及如何改变它的几条经验


this 的值是什么?

  1. this 是 call 的第一个参数,call 的第一参数传的是什么它就是什么
  2. 分析 this 所在函数是被谁调用的,如果这个函数被一个对象调用,那么该对象就是 this;如果无人调用,this 就是 window
  3. API 中的 this,只能通过查文档判断

    • 比如 domObject.addEventListener('click', fn) 中, fn 内部的 this 就是被操作的 domObject 本身
    • 比如 Array.forEach(fn) 中, fn 内部的 this 就是 window
  4. 箭头函数没有 this, 它的 this 跟上下文保持一致

修改 this 的三个方法

1 用 call, 2 用 bind, 3 用 that

  1. 用 call

很好理解

  1. 用 bind

用一个 bind 绑定不同东西后返回一个中间函数,然后调用

阮一峰的例子

  1. 用 that (或 self)

进入函数前,var that = this

进入函数后,所有调用 this 的地方,替换成 that

还是阮老师例子