This 函数
一、this在函数中的四种调用
1.纯粹的函数调用
这是函数的最通常用法,属于全局性调用,这时this就指全局(浏览器中为window,node中为global)
2.作为对象方法的调用
函数还可以作为某个对象的方法调用,这时this就指这个上级对象。
3.作为构造函数调用
通过这个函数生成一个新对象(object)。这时,this就指这个新对象。
4. apply调用
apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数
如何确定this函数的指向
默认模式下,test() —> window 以函数形式调用 严格模式下(设置了‘use strict’),this为undefined
p.test() —> p 以方法的形式调用
new test() —> 新的创建的对象 以构造函数形式调用
p.call(obj) —> obj 使用call和apply方法调用
this的最终指向始终是调用的它的对象
二、修改this指向的三种方法
call方法
apply方法
bind方法
三、call、apply、bind的用处
call方法
可以通过修改this指向使用别的函数的方法
apply方法
最主要是可以把数组一个一个铺开
bind方法
ES6以前可以修改定时器里的this
四、call、apply、bind的特点
1、 它们三个都是可以修改this指向;
2、 而call、apply是可以调用的,bind是返回一个修改了this指向的新函数;
3、 call传参是一个一个传的,apply是需要传入数组或伪数组,
bind是一个一个的传的,可以在调用这个函数的时候传参,
如果在修改指向的时候传,那之后调用这个新函数的时候,
不管传什么,结果都不会变。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现