ES6中箭头函数(=>)的this

ES6对象方法声明对象时,箭头函数this的指向问题 基础 没有this、super、arguments 和 new.target 绑定 不能通过 new 关键字调用 没有 prototype 不可以绑定this 的绑定 不支持argument 不支持重复命名参数 疑问 // 第一种 用 var 定义 value var value = '小明' const foo = { value: '小红', getValue: () => console.log(this.value) } foo.getValue() // => 输出的是小明 // 第二种 用 const 定义 value const value = '小明' co 立即下载

一,了解前须知

1,箭头函数:出现的作用除了让函数的书写变得很简洁,可读性很好外;最大的优点是解决了this执行环境所造成的一些问题。比如:解决了匿名函数this指向的问题(匿名函数的执行环境具有全局性),包括setTimeout和setInterval中使用this所造成的问题。

2,我们常见的window属性和方法有alter,document,parseInt,setTimeout,setInterval,localtion等等,这些在默认的情况下是省略了window前缀的。(window.alter = alter)。

3,在“use strict”严格模式下,没有直接的挂载者(或称调用者)的函数中this是指向window,这是约定俗成的。在“use strict”严格模式下,没有直接的挂载者的话,this默认为undefined。以下都是在非严格模式下讨论。

二,普通函数中的this

普通函数,this的概念是:this是JavaScript的一个关键字,他是指函数执行过程中,自动生成的一个内部对象,是指当前的对象,只在当前函数内部使用。(this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this指向的是window;当函数被作为某个对象的方法调用时,this就等于那个对象)。

一个最简单的例子:

这种情况下,我们希望在每一次循环后都能得到$("#content")的this,但是因为this是只在当前函数内部使用的,又因为js函数是可以多层嵌套的原因,使得我们无法得到最开始的this,这时我们可以把他先用一个变量存储起来,最终达到我们想要的目的。(一般我们会这样定义:var _this = this   var that=this)。个人习惯是用后者。

我们在来看一个函数的例子:

打印是结果是the window。原因是,匿名函数的执行环境是全局的,而且this只在函数内部起作用。此时的this.name在匿名函数中找不到,所以就从全局中找,找到后打印出来。

我们将上面的函数改装一下:

  我们在getNameFun内将this赋给that,此时的that指向的是挂载(调用)的对象,即为object,此时在匿名函数中调用that.name会在object上查找相应的数据,而不是在全局上查找,最终打印出myobject。

我们试着把函数的执行对象放在window下看看:

打印的结果是window的对象,如下图:

接下来我们把函数的执行对象放在一个自定义变量上看看:

两者打印的都是obj的对象,如下图:此时的setTimeout里面的that指向的是obj,因为在say中this的绑定对象是obj,this又赋给了that。

下面为了更深一步的理解this这个概念,我们来看一下下面的代码,并判断其运行结果:

这个函数中,obj.db1()执行时,this.val是指obj里面的val=2,this.val*=2 =4;val在db1函数中并没有定义,所以默认情况下会在全局上找,此时val*=2=2。所以打印2 4。接着,定义一个func=obj.db1,我们把func打印出来看看是这样的:

所以可以看出func的执行对象是window,我们可以此时全局的val已经等于4了,在经过this.val*=2,val*=2的运算,打印的结果就是8  8。

上面的代码打印的就是:

如果你对上面的结果很了解了,那就证明你已经很了解this,那接下来我们来看看es6箭头函数的this

三,es6箭头函数的this

箭头函数的this定义:箭头函数的this是在定义函数时绑定的,不是在执行过程中绑定的。简单的说,函数在定义时,this就继承了定义函数的对象。

所以,这会很好的解决匿名函数和setTimeout和setInterval的this指向问题。我们不用再去给其用that变量存储this。

看下面代码:

打印的结果:

这就是箭头函数中的this!!!

       小伙伴们今天的学习就到这里了,如果觉得本文对你有帮助的话,欢迎转发,评论,收藏,点赞!!!
       每天学习进步一点点,就是领先的开始。如果想继续提高,欢迎关注我,或者关注公众号”祯民讲前端“。大量前端技术文章,面试资料,技巧等助你更进一步!
在这里插入图片描述

Field _II 仿真 学习笔记 参考Field II的使用说明,进行了四个例子的练习。仿真程序和结果如下: PURPOSE1:Calculate the received response from all elements of a linear array and plot the responses and the summed response 【计算来自所有线性阵元的接收响应,并绘制该响应以及叠加响应。】 >> 阅读详情

相关推荐

<视觉>——单目相机的标定(简单原理+Opencv实现)

单目相机的标定原理大致如下: 世界坐标到像素坐标的转换。 期间的参数有S尺度因子,内参矩阵K,旋转矩阵R,平移矩阵T,一共八个未知数。 在Opencv中我们可以方便的根据相机拍摄不同位姿的标定板图片来标定相机,从而求得这些参数,从而可以将相机下的坐标和实际的世界坐标联系起来,求取单应性矩阵H 参考: 单目相机综述:写的特别好 https://www.cnblo...

Kano365的博客 1万+

️ES6 箭头函数的 **this **指向哪⾥?

绑定消除了传统函数的上下文问题,但需谨慎选择使用场景以避免意外行为。若外层无普通函数,则指向全局对象(严格模式下为。,通过作用域链查找最近的外层非箭头函数的。

weixin_45422672的博客 414

BugkuCTF-PWN题pwn2-overflow超详细讲解

解题思路 1)计算出get_shell_的地址偏移量 2)算出来之后就直接溢出到后门函数 知识点 x64函数调用规则 解题之前我们先学下linux x64的函数调用规则。 x64机器在调用某个函数前,比如int func(int a, int b, int c, int d, int e, int f, int g, int h),首先他会把前6个参数从左往右存入到寄存器rdi、rsi、rdx、rcx、r8、r9,其余参数存入到栈里,保存的顺序是从右往左入栈。比如abcdef会存入到寄存器里,然后一次入栈h

am_03的博客 3013

ES6语法-箭头函数-this-高阶函数

快来学习吧,原创不易,多多支持呀!每篇都是干货!

m0_67212141的博客 812

告别抓包失败!保姆级配置:让Burp+Proxifier稳定抓取任意微信小程序

本文提供了一套完整的Burp+Proxifier配置方案,确保稳定抓取微信小程序数据。从环境准备、工具选型到Burp Suite深度配置和Proxifier精准设置,详细解决了证书安装、进程捕获和乱码解析等核心问题,帮助开发者告别抓包失败,提升调试效率。

weixin_28738165的博客 454

ICS v9.5 OverbyteIcsWSocket.pas 整体架构分析

核心架构:OverbyteIcsWSocket.pas 是 Internet Component Suite (ICS) 的基础网络组件单元,提供跨平台 Winsock API 封装,支持TCP/UDP 客户端/服务器,DNS 解析和Raw Socket。在 v9.5 中,SSL/TLS 代码已分离至 OverbyteIcsSslBase.pas 等单元,使核心单元更精简,专注于非加密 socket 操作。

sonadorje的专栏 992

JS-箭头函数中的this的指向

一直对于ES6中箭头函数在使用的时候有些疑虑,其中一项就是this的指向问题。跟之前我所熟悉掌握的函数内部this的指向是有些地方不同的,但是在箭头函数中this到底指向谁,我模模糊糊的。所以为了搞清楚这个问题,就特意查阅了相关的资料,现总结下来。在JavaScript语言里面,this的用途很广泛。在这里,对this的含义以及原理就不做解释和说明,因为本文的目的是阐明this的指向问题。一般的,t

BigKongfuPanda的博客 9740

科研问答:医药类本科生(临床、中医、中药与护理)本科阶段是否需要开展科研学习?

医药类本科生(临床、中医、中药与护理)本科阶段是否需要开展科研学习?

MD Code 1507

JavaScript杂谈(一)——箭头函数没有this

每个函数在定义被 ECMAScript 解析器解析时,都会创建两个特殊的变量:this 和 arguments,换句话说,每个函数都有属于自己的 this 对象; <script> window.a = 'windous' window.b = 'bbbbwindous' window.name = 'lisi' //1.块级作用域下不会被创建this;this只有全局对象window和常规函数才会创建 { let a

hhhcbw的博客,欢迎各位来访 2116

我的python学习之路

Python 是一门功能强大且易于学习的编程语言,广泛应用于数据分析、人工智能、Web 开发、自动化等领域。以下是一个 Python 学习路径的总结,帮助你系统地掌握 Python 编程。

数据知道的博客 3万+

【YOLO目标检测全栈实战】68 模型量化:从FP32到INT8,精度不掉,速度翻倍

摘要: 模型量化能显著提升推理速度(如YOLOv5s帧率从15FPS提升至38FPS),但需避免三大误区:1)校准集需覆盖实际场景,而非随机采样;2)敏感层(如检测头)应保留FP32精度;3)预处理必须与量化前后一致。通过混合精度量化(Backbone用INT8,检测头用FP32)和逐通道量化,可实现<1%的mAP损失。关键步骤包括校准数据准备、量化感知训练及逐层精度评估,最终在Jetson Nano等边缘设备上实现速度与精度的平衡。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 145

JS-()=>{}使用判断this

使用方法1:x=&gt;x+x 等同于 function(x){return x + x} 使用方法2:当多个参数时得加(): (x, y)=&gt;x+y 等同于function(x,y){retutn x+y} 使用方法3:当函数体有多个表达式则加{}:(x,y)=&gt;{...}   ()=&gt;{}使用的时候注意,函数体内的this为使用该函数时的上下文执行环境中的this,如...

xiaye_go的博客 800

RK3588 MPP,RGA,DRM,QT之RGA

RK3588多路视频采用RGA来进行混合成一帧

dreamliweiming的博客 4265

ES6中箭头函数 (=>)、三点运算符(...)的基本用法和注意事项(this指向)

目录一、箭头函数基础语法:省略写法:this指向:1.全局函数下的this2.对象方法里面的this3.对像里面的箭头函数this4.构造函数中的this指向问题简单应用:二、三点运算符1.函数传不定参数,验证数组的长度。2.与解构使用3.与数组解构使用 函数传对象4.扩展1.用...输出数组2.合并数组3.将类数组转为真正的数组4.复制数组5.练习() =>{} // ():函数 =>:必须的语法,指向代码块 {}:代码块const realName = () => { } ;//把函数赋值给realNa

yzq0820的博客 1374

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ES6可以使用“箭头”(=>)定义函数

ES6可以使用“箭头”(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器)。 http://www.cnblogs.com/snandy/p/4403111.html 注意 这样this 指向就不会变了。是定义事件绑定的前一个。

little7654321的专栏 392

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

es6箭头函数_ES6箭头函数的this指向详解

之前写过一篇 Larry:Javascript :this关键字 详解,其实只是解释了普通函数的this用法,今天再给大家补充一下箭头函数的this详解。箭头函数相信大家在日常开发中用到的地方非常之多,因为它很简洁,可读性强,但是它最大的好处,其实是解决了匿名函数的this指向问题,有利于封装回调函数。先来个总结:箭头函数体内的this对象,就是定义该函数时所在的作用域指向的对象,而不是使用时所在...

weixin_39828457的博客 81

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【ES6】两个例子明白箭头函数this指向

前言:es6箭头函数没出现之前,this的指向不是函数被创建时绑定,而是被怎么样的方式调用时绑定的。而箭头函数刚好相反,箭头函数的this指向是函数被创建时绑定的,它的指向就是当前词法作用域中的this,并且不会因为被怎么样的方式调用改变绑定。 如果对非箭头函数this指向有问题的朋友,建议看我之前的文章。【JavaScript】this的指向详解 (为了展示方便,这两个例子都是在浏览器环境中...

汪小穆的博客 1万+

深入理解ES6箭头函数中的this

简要介绍:箭头函数中的this,指向与一般function定义的函数不同,比较容易绕晕,箭头函数this的定义:箭头函数中的this是在定义函数的时候绑定,而不是在执行函数的时候绑定。 1、何为定义时绑定 我们来看下面这个例子: (1) var x=11; var obj={ x:22, say:function(){ console.log(this.x) } }...

liwusen的博客 3万+

ES6中箭头函数的this指向

一直以来对于ES6中箭头函数有些疑虑,其中一项就是this的指向问题,所以不敢放手去使用。因为跟之前我所熟悉掌握的函数内部this的指向是有些地方不同的,但是在箭头函数中this到底指向谁,这块儿模模糊糊的。所以为了搞清楚这个问题,就特意查阅了相关的资料,现总结下来。 在JavaScript语言里面,this的用途很广泛。在这里,对this的含义以及原理就不做解释和说明,因为本文的目的是阐明箭头函...

weixin_43739375的博客 3024

ES6中 箭头函数、this的指向问题

箭头函数是ES6引入的新语法,通过=>连接参数和函数体,主要解决JavaScript中this指向问题和简化代码。核心特点包括:1) 没有自己的this,继承外层作用域的this(词法作用域);2) 语法简洁,可省略括号和return;3) 无法通过call/apply/bind改变this。典型应用场景是回调函数(如setTimeout),避免传统函数中this丢失的问题,使代码更简洁可靠。

qq_49581491的博客 786

ES6(ECMAScript 6 ) 箭头函数以及js中的this

箭头函数定义一个箭头函数很简单,基本语法是: JS([param] [, param]) => { statements }param => expression param 是参数,根据参数个数不同,分这几种情况: () => { ... } // 零个参数用 () 表示; x => { ... } // 一个参数可以省略 (); (x, y) => { ... } // 多参数不能省略

fengzijinliang的专栏 7600

ES6箭头函数中的this指向

1箭头函数中的this (1)箭头函数中没有this : 这意味着 call() apply() bind() 无法修改箭头函数中的this (2)箭头函数中的this指向 :访问上一个作用域的this 说人话:函数在哪个作用域声明,this就是谁 (本质是通过作用域链访问上一个作用域中的this) (3)箭头函数与function函数this区别 function函数 : 谁调用我,我...

坤小的专栏 1155

关于ES6中箭头函数this和普通函数this指向的问题理解

    最近在看ES6,发现对箭头函数的this和普通函数的this理解不是很明确,花了一些时间,将自己理解的思路整理一下,如有错误,欢迎指正:    先说一下普通函数中的this,普通函数中的this表示调用此函数时的对象,如下例:var x=11; var obj={ x:22, say:function(){ console.log(this.x) } } obj.say...

cataclysm2012的博客 9592

ES5的this和ES6箭头函数的this指向的区别

本文用示例介绍ES5的this和ES6箭头函数的this指向的区别。 ES5的this this:谁调用的,this就指向谁。(指向它所在上下文的那个对象)。 全局环境:this 指向全局对象(window), 无论是否严格模式; 全局直接调用:严格模式下, this为undefined; 非严格模式下,this为全局对象window 直接调用,相当于是window调用的它。 方法调用:this指向调用该方法的对象。 构造函数:this指向构造出来的新对象 定时器:this指向全局对象wind

IT利刃出鞘的博客 1030

【ES6】箭头函数this指向问题【看这一篇就够啦!】

箭头函数this指向 箭头函数有4个使用注意点。 (1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。 (2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。 (3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。 (4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。 上面四点中,第一点尤其值得注意。this对象的指向是可变的,但是在箭头函数中,它是固定的。 function fo

Milk~每天分享一点点,技术进步一点点 3254

ES5和ES6箭头函数this简析

ES5和ES6箭头函数this简析 箭头函数的作用: 箭头函数让函数的书写变得很简洁,可读性更好 解决了匿名函数this指向的问题(匿名函数的执行环境具有全局性),包括setTimeout和setInterval中使用this所造成的问题。 ES5 全局环境下,this 始终指向全局对象(window), 无论是否严格模式; console.log(this.document=== docum...

low666的博客 1493
上一篇: 用深度选择器>>> ( /deep/ )解决vue调用第三方组件库覆盖样式不生效问题
下一篇: 基于HTML5 Canvas实现炫酷钟表效果
祯民
博客等级 码龄9年 72粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值