this作为js语言的一个关键字,表示函数运行时自动生成的一个内部对象,只能在函数内部使用。
情况1:纯粹的函数调用
情况2:作为对象方法调用
把对象中的函数赋值成一个变量了。 这样其实又变成普通函数了,所以使用普通函数的规则(默认绑定)。
情况3:作为构造函数调用
使用new操作符调用函数,会自动执行以下步骤。
情况4:apply/call调用
call 或者 apply( 或者 bind) 调用:严格模式下,绑定到指定的第一个参数。非严格模式下,null和undefined,指向全局对象(全局对指的是window),其余值指向被new Object()包装的对象。
总结:
1.函数在被直接调用的时候,其中的this指针永远指向window
2.匿名函数this总是指向window对象
3.谁执行函数,this就指向谁
4.如果函数通过new创建,则this指向新建出来的对象