关于this的总结

  1. 沿着作用域向上着最近的一个function(不是箭头函数),看这个function最终是怎么执行的
  2. this的指向取决于所属function的调用方式,而不是定义
  3. function 调用一半分为这几种情况:
    1. 作为函数调用: foo()
    指向全局对象(globalThis),严格模式下是undefined
    2.作为方法调用,即:foo.bar() /foo.bar.baz()/foo['bar'] /foo0
    指向调用这个方法的对象
    3.作为构造函数使用,即: new Foo()
    指向一个新对象 'Foo{ }'
    4.特殊调用,即 foo.call() foo.apply() foo.bind()
    参数指定成员
    4.找不到所属的function,就是全局对象
var length = 10

function fn() {
  console.log(this.length)
}

const obj = {
  length: 5,
  method(fn) {
    fn() // 作为函数调用 this.指向全局对象 10
    arguments[0]() // 作为方法调用 this指向的是arguments对象  arguments.length为3
  }
}
obj.method(fn, 1, 2)

你可能感兴趣的:(关于this的总结)