不同的场景,this 指代的含义不同,JS中的this关键字也是如此:
-
在全局代码中使用this,指代全局对象
在真实的开发中,很少在全局代码使用this
-
在函数中使用this,它的指向完全取决于函数是如何被调用的
调用方式 示例 函数中的this指向 通过new调用 new method()
新对象 直接调用 method()
全局对象 通过对象调用 obj.method()
前面的对象 call method.call(ctx)
call的第一个参数 apply method.apply(ctx)
apply的第一个参数 通过 new 调用
直接调用
全局函数内部的this
指向 window
对象调用
此时
this
指向调用者obj
call
使用call
调用函数,可以修改this
指向,call
接受的第一个参数就是this
指向
在函数中使用this,它的指向完全取决于函数是如何被调用的
如图f(),获取了obj的sayHi;
输出1: 指向调用者obj
,
输出2: 指向调用者window
this 只想取决于函数是如何被调用的