this指向
JS中 this 在全局时 指向的是全局变量,浏览器环境就是 window。
this 在函数中时,需要判断函数的定义和调用方式:
函数的定义:常规定义的函数function() {}
和 箭头函数() => {}
箭头函数中的 this 指向定义这个函数的上下文。
函数中的this取决于它的调用方式:
- 作为函数调用时,例如:foo()
- 严格模式下,函数内的this指向undefined,不是全局(例如window)
- 非严格模式下,指向全局对象
- 浏览器环境:window
- 作为方法调用时,例如:obj.foo() 、 obj.bar.foo()
- 指向 最终 调用这个方法的对象,简单理解就是函数前
.
之前的解析结果,例如- obj.foo() this指向obj
- obj.bar.foo() this指向obj.bar
- 指向 最终 调用这个方法的对象,简单理解就是函数前
- 作为构造函数调用时,例如:new Foo()
- 指向实例化的对象
- 注意:调用类的静态方法,属于[2.作为方法调用]
- 特殊情况:foo.call() 、 foo.apply()
- 指向参数指定的对象