this的默认绑定规则总共与下面五种:

  • 默认绑定(严格/非严格)
  • 隐式绑定
  • 显示绑定
  • new绑定
  • 箭头函数绑定

1、绑定规则

1.1 默认绑定

  • 独立函数调用,可以把默认绑定看做是无法运用其他规则时的默认规则,this指向全局对象
  • 严格模式下,不能将全局对象用于默认绑定,this会绑定到undefined。但是在严格模式下进行函数调用不影响this默认绑定,即this可以绑定到全局对象。只有在非严格模式下,this才能绑定到全局对象。

1.2 隐式绑定

当函数引用有上下文时,隐式绑定规则会把函数中的this绑定到这个上下文对象。对象属性引用链只有上一层或者说是最后一层在调用中起作用。

隐式丢失: 被隐式绑定的函数在特定情况下会丢失绑定对象,应用默认绑定,把this绑定到全局对象或者undefined上。

1.3 显示绑定

通过call(···)或者apply(···)方法。第一个参数是一个对象,在调用函数是将这个对象绑定到this上。因为直接指定this的绑定对象,称之为显示绑定。