This函数的四种调用方式
1.纯粹的函数调用:
这是函数的最通常用法,属于全局性调用,这是this就指全局(浏览器中为window,node中为global)
2.作为对象方法的调用:
函数还可以作为某个对象的调用,这时this就指这个上级对象
3.作为构造函数调用:
通过这个函数生成一个新对象(object)。这是this就指这个新对象。
4.apply调用:
apply()是函数对象的一个方法,它的作用是改变函数的调用对象。因此,this指的就是这第一个参数。
1.纯粹的函数调用:
通过上下两图代码的调整可以证明此时this就是全局对象
2.作为对象方法的调用:
此时的this指的是obj这个对象
3作为构造函数调用:
JS中,我们通过new关键词来调用构造函数:此时this会绑定在该新对象上。
4.apply调用
此时this指的就是这一个参数obj。
如何确定thi函数的指向:
默认模式下,test——>window 以函数形象调用
严格模式下,(设置了 “use strict"),this为undefined
p.test()——>p 以方法的形式调用
new test()——>新的创建的对象 以构造函数形式调用
p.call(obj)——> obj 使用call和apply方法调用
this的最终指向始终是调用的他的对象。
默认指向定义它时,所处上下文的对象的this指向(这里指的是整个箭头函数处在那个上下文),偶尔没有上下文对象时指向window.
即使是call,apply,bind等方法也不能改变箭头函数this的指向。