百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 行业知识 > 正文

JS函数的this指向

citgpt 2024-11-25 10:03 3 浏览 0 评论

1. 为什么需要this

在编程语言中,几乎都有this关键字,但是JavaScript中的this和常见的面向对象语言中的this不太一样:

  • 拥有this关键字的面向对象编程语言中,如C++、Java和Swift中,this通常出现在类中,并且this代表的是当前调用对象。
  • JavaScript中的this很灵活,不同的调用方式使得this的指向不同。

如下图,我们来看下编写的JS对象。当改变对象名时,有this会让我们编写代码更简单。

JS函数的this指向

2.this指向

通过下图代码运行结果可以得出结论:

  • 函数在调用时,JavaScript会默认给this绑定一个值。
  • this的绑定和编写的位置无关,与调用方式和调用位置有关。
  • this是在运行时被绑定的。

3.this绑定规则

我们知道this是在运行时绑定的,那是如何绑定的,有什么绑定规则?一起来了解:

  • 默认绑定
  • 隐式绑定
  • 显示绑定
  • new 绑定

3.1 默认绑定是在全局环境中的函数的独立调用,如下图:

3.2 隐式绑定是通过某一对象发起对函数的调用,如下图:

3.3 显示绑定是通过call、apply和bind方法来明确指定this,如下图:

3.4 new 绑定,使用new关键字来调用函数时,会执行如下操作:

  1. 创建一个全新的对象。
  2. 新对象内部的[[prototype]]属性会被赋值为该构造函数的prototype属性。
  3. 构造函数内部this,指向新对象。(this绑定)
  4. 执行函数内部代码。
  5. 函数没有返回非空对象,就会默认返回这个新对象。

4.绑定优先级

学习了四条规则后,我们只需要查找函数的调用使用了哪条规则,就能知道this对象指向,但是调用使用了多条规则,谁的优先级谁最高呢?

4.1 默认绑定优先级最低

从上面优先级的绑定方式来看,毫无疑问,默认绑定的优先级最低,因为有其他规则时,就会通过其他规则的方式来绑定this。

4.2 显示绑定的优先级高于隐式绑定

4.3 new绑定优先级高于隐式绑定

4.4 new绑定优先级高于bind

new关键字不能和apply/call一起使用的,因为apply/call绑定会执行函数,而new函数的结果就会报错,当然也可以返回函数给new,但是这样this没在同一作用域下,比较也就没有意义了,所以这里只说了bind与new的优先级。

通过上述了解,得出结论:

new绑定 > 显示绑定(apply/call/bind) > 隐式绑定(obj.test()) > 默认绑定(独立函数调用)

5.this规则之外

5.1 忽略显示绑定,使用默认绑定

在显示绑定中,当指定的this传入null或者undefined,那么显示绑定会被忽略,使用默认绑定,如下图:

5.2 间接函数引用,使用默认绑定

5.3 箭头函数的this

箭头函数是ES6新增知识,箭头函数不会绑定this对象,this引用会从上层作用域找到对应的this,如下图:

零前端学习输出,一起探讨,一起进步。

相关推荐

外贸网站建设要多少钱?外贸网站建设周期要多久

大家好,我是【无锡柠萌网络lemon56.com】的小美,今天分享:外贸网站建设要多少钱?外贸网站建设周期要多久您关注的问题·FAQ外贸网站建设中遇到的常见问题,让您少走弯路,提高效率!...

500块搭建一个可以卖货的跨境电商独立站,包括服务器和域名吗?

用500元搭建一个可以卖货的跨境电商独立站,虽然有一定挑战性,但通过精打细算和选择合适的工具和服务,仍然是有可能的。以下是一些建议,帮助你在预算范围内实现这个目标,包括服务器和域名的选择。...

无锡网络公司设计搭建阀门网站一般要多少钱?

无锡网络公司设计搭建阀门网站一般要多少钱?这是一个涉及多方面因素的复杂问题,其费用因网站规模、功能需求、设计复杂度及后续维护等因素而异。首先,从基础成本出发,域名注册是搭建网站的第一步,费用通常在几十...

定制化网站开发大概多少钱

定制化网站开发的价格因项目的复杂性、功能需求、设计要求和开发时间等因素而异。以下是一些常见的定制化网站开发价格范围,供参考:1.简单的定制化网站开发:一般来说,一个简单的定制化网站开发项目可能需要花...

9月安卓手机性能排行榜出炉:前十名差距仅为7%

时间已经进入9月,按照安兔兔目前的安卓手机性能榜单显示,红魔9SPro+依旧力压其他热销手机成为榜首,可见游戏定位的这款手机,在性能上确实非常的出色。不过,笔者也发现了一个问题,其中前十名中得分最高...

装修公司怎么在网络平台接单?实现高效获客

装修行业正经历着深刻的变革,随着消费者需求的日益多样化与个性化,传统的线下获客方式已难以满足装修公司的业务需求。因此,装修公司必须紧跟时代步伐,充分利用网络平台实现高效获客。1、入驻装修接单平台:壹品...

企业如何利用二维码进行线上营销?

#企业如何利用二维码进行线上营销?#企业利用二维码进行线上营销,可以从以下几个方面入手:?1.设计创意二维码?:...

家电销售该怎么线上拓客

社交媒体平台:利用微信、微博、抖音等平台,定期发布家电产品的信息、使用心得、促销活动等内容。引流靠手动一定是不行的,所以一般使用点软件肯定没错,最近用了款比较冷门的APP,"里德助手Plus...

pop社交软件,脱单软件排行榜

在交友软件里面脱单是非常明确的一件事,各年龄各社交平台上的女人都是有所不同的,具体问题具体分析一下。接下来就说说又哪些比较优质的恋爱脱单软件。...

手机处理器最新跑分排行榜,你的手机什么水平?

手机处理器最新跑分排行榜,你的手机什么水平?第1名:天玑9300第2名:骁龙8Gen3第3名:A17Pro第4名:天玑9200第5名:骁龙8Gen2第6名:骁龙8Gen1...

继番茄小说后,字节再推免费网文 App“蛋花小说”和“常读小说”

据Tech星球报道,字节跳动公司近期推出了两款全新的免费网文App,分别是“蛋花小说”和“常读小说”。这两款产品的开发公司分别为湖北福瑞兴网络科技有限公司和湖北聚合润网络科技有限公司,均为字节跳动的1...

全世界最好用的AI软件排名是?

Hey小伙伴们,今天咱们来聊聊那些让人爱不释手的AI神器!在这个智能化时代,谁还没几个拿得出手的AI软件呢?别急,我这就给你盘点一波全球超火的AI软件,保证让你大开眼界!...

手机root软件哪个成功率高?手机root软件排行榜2025

作为游戏玩家,欲在手游中畅玩无阻,root权限不可或缺,可优化画质、启用辅助。2025年已至,究竟哪些手机root软件能脱颖而出?哪款软件的root成功率会独占鳌头?一、手机root软...

独立站新手教程引流篇:如何优化谷歌广告投放效果?

随着谷歌广告单价的持续上涨,如何在提升投放效果的同时,降低推广费用成为每一个独立站卖家的必修课。因此新手卖家在完成初步的广告投放流程后,最重要的就是了解一下谷歌广告优化的基础策略。设置转化跟踪即利用G...

云媒易:干货知识分享!海外推广的渠道有哪些,如何正确的选择?

越来越多的海外企业或国内的跨境商家认识到海外的网络营销的作用,开展线上外贸营销,渠道是非常的重要,那么海外的推广渠道有哪些?企业应该如何选择呢?1、社交媒体推广社交媒体推广是现在海外推广方式中最热门的...

取消回复欢迎 发表评论: