改变 this 指向的方法
call、apply、bind三者为改变this指向的方法。
共同点:第一个参数都为改变this的指针。若第一参数为null/undefined,this默认指向window
call(无数个参数)
- 第一个参数:改变this指向
- 第二个参数:实参
- 使用之后会自动执行该函数
1 2 3 4 5 6 | function fn(a, b, c) { console.log( this , a + b + c); // this指向window } fn(); fn.call(document, 1, 2, 3); //call改变之后this指向document //输出 #document 6 1,2,3是实参 结果相加为6 |
apply(两个参数)
- 第一个参数:改变this指向
- 第二个参数:数组(里面为实参)
- 使用时候会自动执行函数
1 2 3 4 5 | function fn(a, b, c) { console.log( this , a + b + c); } fn(); fn.apply(document, [1, 2, 3]); |
bind(无数个参数)
- 第一个参数:改变this指向
- 第二个参数之后:实参
- 返回值为一个新的函数
- 使用的时候需要手动调用下返回 的新函数(不会自动执行)
1 2 3 4 | function fn(a, b, c) { console.log( this , a + b + c); //window } let ff = fn.bind( "小明" , 1, 2, 3); //手动调用一下 |
call、apply与bind区别:前两个可以自动执行,bind不会自动执行,需要手动调用
call、bind与apply区别:前两个都有无数个参数,apply只有两个参数,而且第二个参数为数组
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步