三分钟搞定普通函数和箭头函数的this指向问题

记住两个口诀:
普通函数的this是:谁调用这个函数,函数的this就指向谁
箭头函数的this是:箭头函数定义时的执行上下文的this是谁,箭头函数的this就指向谁
实例代码:

        var name=222var b = {name:111,fn:()=>{console.log(this.name)},fn2:function(){console.log(this.name)}}b.fn()//输出---------222b.fn2()//输出--------111//1. b.fn是一个箭头函数,根据口诀:箭头函数的this取决于其定义时的执行上下文,可以看到b.fn的执行上下文是对象b//b的this为window,因此,b.fn()输出的this.name其实就是window.name//2.b.fn2是一个普通函数,根据口诀:“谁调用这个函数,函数的this就指向谁”,因此fn2中的this就是b

再来看一段代码:

       var birth = 2000var obj ={birth:2001,getAge:function(){var b = this.birthconsole.log(b)var birth = 2002var fn = ()=>{console.log(this.birth)}fn()}}obj.getAge()//输出-----------2001let fnGetAge = obj.getAgefnGetAge()//输出-------------2000

分析
obj.getAge()是一个普通函数,根据口诀:“谁调用这个函数,函数的this就指向谁”因此此时的getAge()this指向obj,再分析其中的箭头函数的this,根据口诀:“箭头函数定义时的执行上下文的this是谁,箭头函数的this就指向谁”这里的执行上下文就是函数getAge的函数作用域,因此函数getAge()的this指向谁,其内部的箭头函数也指向谁-----所以obj.getAge()执行输出2001

obj.getAge作为值赋值给fnGetAge,此时的fnGetAge的this指向window,因此其内部的箭头函数this也指向window—所以输出2000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网康科技 NS-ASG 应用安全网关 SQL注入漏洞复现(CVE-2024-2330)

0x01 产品简介 网康科技的NS-ASG应用安全网关是一款软硬件一体化的产品,集成了SSL和IPSec,旨在保障业务访问的安全性,适配所有移动终端,提供多种链路均衡和选择技术,支持多种认证方式灵活组合,以及内置短信认证、LDAP令牌、USB KEY等多达13种认证方式。 0x02 漏洞概述 …

OPENCV(0-1之0.1)

OPENCV-0.1 学习安排计算机视觉简介是什么?应用领域基础概念 OpenCV简介历史背景和主要贡献者支持的语言和平台主要模块和功能 安装(windows_python)pip安装验证安装(记得安装jupyter) 第一个OpenCV程序实践练习 官方文档 学习安排 计算机视…

数据同步方案

目录 1 需求概述 1)时间戳 2)触发器 3)差异更新 4)日志解析 2 产品实施 1)数据同步 2)同步日志 3)流量统计 4)数据比对 1 需求概述 数据同步用于将不同数据库系统产生的数…

欧盟商标的申请流程

欧盟商标的申请流程 1、商标检索:在申请之前,我们建议您进行商标检索,以确定您的商标是否与已有商标存在冲突。 2、申请途径选择:您可以选择通过欧盟商标局的在线系统,或者通过邮寄纸质申请材料的方式进行申请。 3、…

讲讲分布式和集群那点事

本专栏简单讲讲那些特别散乱杂的知识,欢迎各位朋友订阅专栏 感谢一路相伴的朋友们 浅淡计算机系列第5篇 目录 前言 集群 啥是集群? 集群可以应用在哪里? 集群的好处和坏处 举个例子 分布式 啥是分布式?

java 操作JSON对象查找、删除、增加和修改等操作

对JSON的查找 格式: JSONObject.getString("value") 示例: info.getString("name") 删除JSON对象中的某个数据 格式: JSONObject.remove("value") 示例:info.remove("name") 增加和修改J…

2024腾讯云轻量应用服务器地域有什么区别?哪个好?

腾讯云轻量应用服务器地域如何选择?地域就近选择,北方选北京地域、南方选广州地域,华东地区选上海地域。广州上海北京地域有什么区别?哪个好?区别就是城市地理位置不同,其他的差不多,不区分好坏…

亲测有效,职场焦虑迷茫的测试人都需要的3大良方!

Hi,大家好,我是小马哥。日常大家聊天时经常提及一个关键词——大环境不好,这种感受像一股暗流,由此带来了很多变化。 有人在这股潮流中感到迷失,选择了躺平;而有的人则积极寻找应对方法,努力在…

Linux常用指令大全

一、基本命令 1、立即关机并重启动,执行如下命令: shutdown -r now 或者reboot 2、立即关机,执行如下命令: shutdown -h now 或者poweroff 3、等待2分钟关机并重启动,执行如下命令: shutdown -r…

深入理解Apache Commons Pool2池化技术

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在现代软件开发中,为了提高性能和资源利用率,开发者们经常使用池化技术来管理那些创建和销毁代价较高的对…

LeetCode108题:将有序数组转换为二叉搜索树(python3)

一个容易想到的思路:使用 nums 中最靠近中心的位置作为整棵 BST 的根节点,确保左右子树节点数量平衡。随后递归构造 nums 中下标范围为 [0,mid−1]作为左子树,递归构造 nums 中下标范围为 [mid1,n−1]作为右子树。 # Definition for a binar…

I2C学习总结

i2c概述 I2C(Inter-Intergreted Circuit) 是一种串行通信协议,用于集成电路之间完成数据传输,i2c用广泛用以各种领域,包括电子设备、嵌入式系统、工业自动化等; i2c仅仅只是一个数据传输的协议&#xff0c…

【精解前端八股手写题】深入浅出柯里化

柯里化模板 柯里化是什么基本概念偏函数 柯里化有什么用场景1:拆分计算场景2:工厂函数 如何实现柯里化基础学习版:新人入门极简精华版:一行代码魔改升级版:闭包乱炖 柯里化是什么 基本概念 前端中的柯里化&#xff0…

逻辑斯特 + 神经网络梯度下降公式推导 + 向量化

全部推导来自吴恩达老师的视频课,下面仅作整理 逻辑斯特 神经网络

Vue+OpenLayers7入门到实战:使用webgl图层叠加超大量Point点要素,解决叠加超过一百万数据量点位导致浏览器卡住变慢的问题

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7 前言 本章介绍如何使用OpenLayers7在解决地图上叠加超过几千以上要素点就开始变慢,一万以上的要素点的时候,浏览器页面就开始卡顿或直接卡死,甚至浏览器会弹出是否等待页面加载的提示。 这时候要怎么优化?OpenLayers官…

win10安装Ubuntu22.04LTS及深度学习相关配置详细教学

由于之前Ubuntu系统硬盘空间分配的不够,又去看了一下发现扩容很很麻烦。加以发现自己前面安装的深度学习环境版本与实际要用的不符,所以当机立断决定直接重装系统。 Ubuntu系统安装 参考视频:一看就会!8分钟真机安装【Ubuntu/Wi…

JWT原理

JWT 介绍 JWT(JSON Web Token)是一个开放标准(RFC 7519),它定义了一种简洁的、自包含的方法用于通信双方之间以 JSON 对象的形式安全地传输信息。这种信息可以被验证和信任,因为它是数字签名的。JWT通常用于…

Android Selinux详解[四]--新增服务标签相关

在工作过程中,SElinux常用的有以下几个文件可用于新增标签 可用于加标签的文件名含义对应的声明文件名(一般会声明的地方,根本上放哪里都可以)file_contexts给 文件/目录/节点 新增标签file.tegenfs_contexts给节点新增标签,与上一个不同的是…

SpringBoot总结-基于SpringBoot实现Web开发

原创作者:田超凡(程序员田宝宝) 版权所有,转载请注明原作者,严禁复制转载 3.1、静态资源访问 在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。 默认配置 Spring Boot默认提供静态资…

第二证券|沪指窄幅震荡跌0.26%,半导体概念走强,保险板块跌幅居前

13日早盘,沪深两市窄幅震动,三大指数均小幅跌落。盘面上,人工智能方向团体反弹,半导体个股走势活跃。 到午间收盘,沪指跌0.26%,报3047.85点;深成指跌0.15%,报9615.92点;…