*this只和执行环境有关,和声明环境无关。谁调用this,this就指向谁。app
*this的指向分为四种:函数
1.做为普通函数调用:this
2.做为对象的方法调用:spa
指向对对象,但用新变量引用该方法时候,又变为普通函数调用,指向window:对象
解释:方法其实就是一个对象中,属性赋了一个函数,而o.getN就表明这个函数,把它赋给一个新变量调用之,变成了普通函数调用。blog
3.在构造函数中,指向new运算符计算出来的实例对象。
get
4.apply调用:变量
apply的做用是改变函数的调用对象,它的第一个参数就表示改变后的调用对象,因此,this就指向第一个参数。构造函数
*当apply的参数为空或null时,默认调用全局函数。引用
*有时候咱们使用call和apply的目的并不在于指定this的指向,而是借用其余对象的方法,那么咱们就传入null来代替某个具体的对象。
Math.max.apply(null,[1,2,33,4,6]);//33