1.基本函数调用
- 形如:function fn(arg){..........}——>fn();
- 在基本函数调用中,this被绑定到全局变量中,直接调用一般指window。
2.方法调用
- 函数被保存为对象的一个属性:obj.fn=fn;——>obj.fn();
- 调用上下文this为该对象。
运行结果为:
1
2
3.构造函数调用
- 函数或方法调用之前带关键字new:function fn(){...};var obj=new fn();
4.通过call()和apply()进行调用
根据是否是strict模式,this指向undefined或者window,但是可以通过call()和apply()两个函数改变this指向哪个对象。
call()、apply()都需要两个参数,第一个参数是改变后的调用对象,第二个参数是函数的参数,区别在于call是传入的原来参数的序列,apply是以数组的形式传入原来的参数。