【注】this的指向,是在函数被调用的时候确定的。也就是执行上下文被创建时确定的。
【注】在函数执行过程中,this一旦被确定,就不可更改了。
一、函数中的this
在一个函数上下文中,this由调用者提供,由调用函数的方式来决定。如果调用者函数被某一个对象所拥有,那么该函数在调用时,内部的this指向该对象。如果函数独立调用,那么该函数内部的this,则指向undefined.但是在非严格模式中,当this指向undefined时,它会被自动指向全局对象。
【注】想要准确确定this指向,找到函数的调用者以及区分他是否是独立调用就变得十分关键。
二、使用call,apply显示指定this
JavaScript内部提供了一种机制,让我们可以自行手动设置this的指向。它们就是call与apply。所有的函数都具有着两个方法。它们除了参数略有不同,其功能完全一样。它们的第一个参数都为this将要指向的对象。
【call】:以一个一个的形式传递。
【apply】:以数组的形式传递。
三、构造函数与原型方法上的this
new的过程:
1.创建一个新的对象;
2.将构造函数的this指向这个新对象;
3.指向构造函数的代码,为这个对象添加属性,方法等;
4.返回新对象;