①普通函数------this指向调用者
12345function fn () {
console.log( this) ;}
window.fn();
②构造函数------指向当前实例对象
123456789function Person (uname, age) {
this.uname = uname;
this.age = age;
console.log(this);
}
③方法------指向调用者(非严格模式)
看方法名前面是否有“.”,有的话,“.”前面是谁this就是谁,没有的话this是undefined
④事件处理程序------调用者(定时器)
12345window.setInterval(function () {
console.log(this); //window
}, 1000);
④自执行函数------window、调用者(非严格模式下)
自执行函数中的this永远是undefined(在严格模式下)
12345(function () {
console.log(this);
})();
24.改变this指向
call、apply、bind:都是函数的方法
call和apply:都会使函数执行,但是参数不同
bind:不会使函数执行,参数同call
call:函数.call(this, arg1, arg2......);
①call 方法能够在调用函数的同时指定 this 的值
②使用 call 方法调用函数时,第1个参数为 this 指定的值
③call 方法的其余参数会依次自动传入函数做为函数的参数

apply:函数.apply(this, [arg1, arg2......]);
①apply 方法能够在调用函数的同时指定 this 的值
②使用 apply 方法调用函数时,第1个参数为 this 指定的值
③apply 方法第2个参数为数组,数组的单元值依次自动传入函数作为函数的参数

通过apply改变this指向
bind:函数.bind(this, arg1, arg2......);
bind,用于既想要改变this的指向,但是又不希望立刻执行函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南