首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么这个去反跳函数会破坏" this "?

去反跳函数(Debounce Function)是一种常用的前端开发技术,用于限制某个函数在短时间内被频繁触发的情况。它通过延迟执行函数来提高性能和用户体验。然而,如果在实现去反跳函数时不小心处理"this"关键字,可能会导致"this"的指向发生错误,从而破坏代码的正确性。

在JavaScript中,函数的执行上下文(execution context)决定了"this"关键字的指向。而在去反跳函数中,为了实现延迟执行,通常会使用setTimeout或者setInterval函数来设置一个定时器。在定时器回调函数中,由于函数的执行上下文发生了改变,"this"关键字的指向也会发生变化。

具体来说,当使用去反跳函数时,如果原始函数中使用了"this"关键字来引用当前对象或者调用对象的方法,那么在去反跳函数中,"this"关键字将不再指向原始函数所期望的对象,而是指向全局对象(在浏览器环境中通常是window对象)或者undefined。

这种情况下,如果在去反跳函数中需要使用"this"关键字,可以采取以下几种解决方案:

  1. 使用箭头函数:箭头函数不会改变函数的执行上下文,它会继承外部函数的上下文。因此,可以将去反跳函数定义为箭头函数,确保"this"关键字指向正确的对象。
  2. 使用bind方法:可以使用bind方法将原始函数绑定到指定的上下文对象上,生成一个新的函数。这样,在去反跳函数中调用绑定后的函数时,"this"关键字将指向绑定的对象。
  3. 保存this引用:在原始函数中,可以将当前的"this"关键字保存到一个变量中,在去反跳函数中使用该变量来引用正确的对象。

总之,去反跳函数会破坏"this"关键字的指向,因为函数的执行上下文发生了改变。为了避免这个问题,可以使用箭头函数、bind方法或者保存this引用的方式来确保"this"关键字指向正确的对象。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

六.逆向分析之条件语句和循环语句源码还原及流程控制

为什么需要记住这个代码定式呢? 因为对于流程控制的识别,我们关键是要找到IF语句的作用域(上界和下界),上界在jxx的位置,称之为IF_BEGIN。...具体解释如下: JLE:小于等于跳转 --> 代码还原就是“不小于等于”,即:大于跳转 JGE:大于等于跳转 --> 代码还原就是“不大于等于”,即:小于跳转 条件 因为当我们满足这个条件的时候它会跳转到另一个地方...接着我们重点还是回归到代码上去,点击“loc_401039”函数高亮,同样的方法划分出这个单分支的上界和下界,并且嵌套了一个单分支,最终还原出源代码。...JLE --> 0x0040100E:PUSH操作 JMP --> 0x00401013:CALL操作 双分支结构特点: jxx的目标处上一行指令为jmp,而且是往高地址的jmp(往下)。...它们有个公共的函数调用被提到下面去了,就是下图所示的两行代码,这个时候我们要把它放回去方便还原。 接着我们复制汇编代码至C语言中进行还原,方便大家理解。

95530

王石:危机时才考虑转型就晚了

在1995年医生诊断我腰椎间有一个血管瘤,当时因为压迫左腿疼痛难忍,医生给出的意见是如果不注意的话可能瘫痪。...其实我一直想着西藏,一直想去看看珠穆朗玛峰,但是没有时间,总觉得随时可以,也就一直没有。当然,我对生活并没有悲观,无非就是下肢瘫痪,头脑还很清楚。...万科是最大的开发商,你可以不懂得创新,但是这个你懂的。自然破坏,中国的森林保护住了,但是国外的破坏了。 我意识到这点的时候,主动找到了绿色和平组织。...绿色和平组织驻北京干事是一个中国香港人,他吓了一,他说我知道万科,但是万科董事主席为什么找我呢?你们一般都是躲着我们的。我说我知道我躲是躲不过去的,有一天你会来找我。既然你找我,不如我先来找你。...可口可乐是WWF(世界自然基金)的战略合作伙伴,现在万科也是WWF的战略合作伙伴。

52540
  • 狼人杀入坑指南

    发言要组织好言辞,要明确你的目的是什么,要踩谁,为什么踩,要保谁,为什么保。...因为复杂的套路都是需要配合的,你有这个想法结果没有人配合,那这个套路不仅无疾而终,还有可能扰乱场上的局势,起到效果。更别提这所谓的“套路”有可能根本就不合理,别人也无从配合。...再者就是,很多套路是基于你的游戏形象才能生效的,譬如说如下这种情况: 你拿了张狼牌,在警上悍预言家,你发现昨晚被刀的人也参与警上竞选了,在你后置位,看着很大概率也预言家,你直接声称昨晚查杀他,之后他果然跳了预言家...而如果你们两个给人的印象都是高手,那大家觉得你玩狼不可能悍预言家查杀一个被你刀了的人,否则不是自己打自己脸么,你一个会玩的人怎么这么傻,这时候你可以提出一个猜测,”这都是对方的套路,故意晚上自刀...一旦让悍狼拿到警长,你哪怕验了再多的人,之后的话也没有说服力。这个游戏不是单纯地找狼,找了狼你还得说服别人站在你这边把狼票出去。 警上有预言家对,是不是就该无脑把警徽飞给其它强神的人?不是。

    67130

    16位汇编第九讲汇编指令以及逆向中的花指令

    ;跳转到 函数执行后的吓一吓一指令继续执行END_EXIT: ;程序结束的代码不关注 mov ax, 4c00h int 21h 看到上面的代码发现了什么,是不是和我们上面的图很像...正好10个,我们的寄存器都不够用了怎么办 3.更高级的Call带参数   我们这个时候就会想到,寄存器已经不能满足我们的需求,这个时候,可以使用栈,我们可以使用栈来保存信息 出栈的时候栈平衡(就是使栈空间不被破坏...+2 mov bx,[bp+ 4] add ax,bx ret 在这里应该注意到了,我们用Call调用的时候,为什么函数内部要+2 原因是当这个子程序执行完毕的时候,需要返回到主程序执行...,因为为了保证汇编代码不出错 每走一次代码都会重新反汇编 2.花指令主要对抗的是静态调试,因为病毒是不能运行的,只能看二进制和汇编,这个时候怎么办 我们发现了,他要jmp, jmp 1个字节,这个时候可以写个工具弄...,所以没有完整的花指令去除工具,到最后,可能你需要自己分析,自己修改了.

    1.5K100

    自己动手打造工具系列之自动刷新简历

    Options主要是来已无GUI方式启动浏览器,避免突然个浏览器出来吓自己一。 步骤三、代码编写 首先定义一个类,所谓面向对象编程嘛。现在很火,耳熟能详 ~ ~其次初始化参数和一些变量。...有盆友问,为什么是m.liepin.com而不是www.leipin.com呢?后面会一一解释。 然后我们需要操作两个网站的简历自动刷新,那我们来定义两个方法吧,我真的想称之为函数。...这个两个方法的内容大同小异,因为每个网站的结构不一样,所以造成了需要设定两个方法。以zhaopin()这个方法来讲解。 ?...其实主要在于如何定位元素,然后操作元素。Selenium提供了8种定位元素的方法,大家有兴趣可以去官网看看。...然后我们进入登陆后的页面查找我们想要得到的自动刷新简历的功能。找到元素,右键“复制”->”CSS选择器”即可复制位置。 ? ?

    90850

    编码最佳实践——依赖注入原则

    该模式主张将一个可复用的工作流程或者由多个步骤组成的算法定义成模板方法,组成这个流程或者算法的步骤实现在相应的虚方法之中,模板方法根据按照预先编排的流程调用这些虚方法。...缺点: 新加入依赖时会破坏原有的方法签名,如果这个方法已经被其他很多模块用到就很麻烦。 与构造方法注入一样,会有很多参数。 在这三种注入方式中,推荐使用构造函数注入。...但是,其实后一种方式并不是依赖注入模式,而是服务定位器模式。因为看起来和依赖注入模式很相似,人们经常会忽视它给代码带来的破坏。...服务定位器直接委托Container实例来解析实例对象,这样造成服务没有依赖的假象。但是服务肯定是有依赖的,不然为什么要从服务定位器获取它们呢。...在依赖注入的三种注入方式中,推荐使用构造函数注入。另外在没有从构造函数注入的机会时,可以考虑选择服务定位器模式。

    89920

    张小龙演讲干货:微信的未来在哪?这里有7个答案

    只是我们做的一个实验,希望更多第三方游戏能够像一样获得用户喜爱。...外挂的行为破坏这个游戏的规则,这个游戏发布以后我们花了很多时间来打击外挂。这种对抗也是永无止境的,外挂的水平也在不断提高的。...我们希望通过这样的小游戏,让用户立即触达和使用。小游戏是小程序抱有最大希望的事,我们对它有足够的耐心,比第三方更有耐心。...我们为什么看好他,在我们看来,小程序代表了一种表达的方式,万事万物都包含信息,所有的信息都希望被人触达和沟通,小程序就是一种信息的组织方式和信息的载体。...谈企业微信 很多企业提一个需求,我们怎么样通过企业微信接触到企业之外的客户,这些企业之外的客户目前都是在用微信?这里就产生了一个需求,企业微信里面的员工怎么样通过企业微信直接跟微信的客户发消息?

    73760

    如何判断回文链表

    r++ } return string(str[l:r]) } 因为回文串长度可能为奇数也可能是偶数,长度为奇数时只存在一个中心点,而长度为偶数时存在两个中心点,所以上面这个函数需要传入...实际上就是把链表节点放入一个栈,然后再拿出来,这时候元素顺序就是的,只不过我们利用的是递归函数的堆栈而已。 ? 当然,无论造一条反转链表还是利用后序遍历,算法的时间和空间复杂度都是 O(N)。...= nil{ slow = slow.next//一次一步 fast = fast.next.next//一次两步 } // slow 指针现在指向链表中点 ?...至此,把上面 3 段代码合在一起就高效地解决这个问题了,其中reverse函数很容易实现: func reverse(head *ListNode)* ListNode { var pre ,...我知道肯定有读者问:这种解法虽然高效,但破坏了输入链表的原始结构,能不能避免这个瑕疵呢?

    86920

    为什么会有ResNet? Why ResNet?

    答案无疑是否定的,人们发现当模型层数增加到某种程度,模型的效果将会不升降。也就是说,深度模型发生了退化(degradation)情况。 那么,为什么会出现这种情况? 1. 过拟合?...为什么模型退化不符合常理? 按理说,当我们堆叠一个模型时,理所当然的认为效果越堆越好。因为,假设一个比较浅的网络已经可以达到不错的效果,那么即使之后堆上去的网络什么也不做,模型的效果也不会变差。...图中右侧的曲线叫做接(shortcut connection),通过接在激活函数前,将上一层(或几层)之前的输出与本层计算的输出相加,将求和的结果输入到激活函数中做为本层的输出。 ?...有的人也许纳闷,我们已经知道一个模型的来龙去脉了,那么在一个客观上已经十分优秀的模型,强加那么多主观的个人判断有意思吗?...比如我最喜欢的两个理解就可以引申出这样的问题“虽然接可以结合不同分辨率,但ResNet显然没有充分利用这个优点,因为每个shortcut顶多跨越一种分辨率(大部分还不会发生跨越)”。

    1.5K30

    鹅厂优文 | Cocos微信小游戏开发

    先上图,玩法和差不多,但更紧凑更需要节奏感 需要在绿色箭头的格子按屏幕完成跳跃 目前功能比较简单,只做了无尽模式 未标题-1.jpg 采用Cocos Creator v1.9.0开发,支持一键发布到微信小游戏...地图是动态随机生成的,可以无限跑下去,跑的速度随着时间越来越快。...相比这种单向的挑战分数而言,更加有互动性。当然收费点就是卖关卡的格子啦,付的钱越多可以创建越长的关卡。...关于如何外挂: 对于直接发分数给服务器的这种方式,假设无法从外部拿到微信小游戏的源码,那可以在每局都让服务器生成一个随机种子,然后地图的生成则在此随机种子上随机,这样每一个格子都可以生成一个唯一的校验码...,上报分数时需要附带这个校验码,服务器用同样的算法比较上报的校验码是否相同,来达到外挂效果。

    5.4K161

    揭密微信小游戏那些外挂

    WeTest 导读 张小龙:这个游戏发布以后,其实它的效果有点超出我们的预期,我们自己开玩笑说,这个游戏突然变成了有史以来可能用户规模最大的一个游戏,因为它的DAU大概到了1点几亿,但同时出现了很多外挂...,对其他一些每天在练习,试图把自己的水平提高,而打一个高分的人就很不公平,他可能就没有动力继续练习,继续超越自己个人的最高分数。...所以这样一个行为,外挂行为其实破坏整个系统的规则,并且让规则立即变得失效。 所以,我们这个小游戏发布以后,我们就开始花了很多很多时间来打击外挂。...总结一下,目前这个方案基本没有太大问题,但如果游戏把背景改成了非线性渐变,或随机飘落一些物体,或棋盘表面更加复杂,那这里的算法就基本不可用了。 2....这里是否准确的精髓就在于高斯滤波去除图像噪音的临界点以及 Canny 函数中阈值的设定,需要不断调整参数到最优状态。 相关代码: ?

    65750

    微信小游戏外挂分析

    WeTest 导读 张小龙:这个游戏发布以后,其实它的效果有点超出我们的预期,我们自己开玩笑说,这个游戏突然变成了有史以来可能用户规模最大的一个游戏,因为它的DAU大概到了1点几亿,但同时出现了很多外挂...,对其他一些每天在练习,试图把自己的水平提高,而打一个高分的人就很不公平,他可能就没有动力继续练习,继续超越自己个人的最高分数。...所以这样一个行为,外挂行为其实破坏整个系统的规则,并且让规则立即变得失效。 所以,我们这个小游戏发布以后,我们就开始花了很多很多时间来打击外挂。...的平面场景(2.5D),所以我们测量到的直线距离在 2.5D 场景中是有变化的,虽然影响不大,但在游戏后期棋盘越来越小,距离越来越大时,容易凸现出问题来,所以关于距离的计算有几种不同的解决: 拟合函数的细节可以参考...,自己编写了控制代码,把按压时间传输作为机械臂按下的停留时间,想法确定后便开始购置物品: 012201.png 到货后折腾一两个晚上,最后成功搭建好了,大家看看效果(电容笔偶尔还是触碰不良) 视频链接

    1.2K70

    对一些架构设计原则的反思

    也就是说,只有从业务上去分析、拆分,才能够得到⼀个“Simple and Stupid”的结构,这是⼀个副产品,⽽不是⽬标。如果依照这个原则为⽬标设计,则可能破坏业务本身的整体。...为什么会出现这个原则呢︖从这个原则出现的时期来看,是在 1980 年代提出来的,猜想是因为软件⼯程不够发达,开发⼈员惧怕改变所导致的。为什么要对修改关闭呢︖因为害怕修改所带来的连锁反应。...为了这⼏⾏代码,引入那么多抽象,破坏“内聚”不说,⾥氏代换时,⼀般都是运⾏时才能确定的,⽽导致运⾏时探查问题的麻烦,同时,代码也很难阅读,没⼈敢去修改,影响⽣活质量。...可是为什么变成⼀个⼤接⼜呢︖恰恰就是为了要重⽤这个接⼜,以便让各种不同的调⽤者来访问。所以访问通道上的重⽤是万万不可的,因此也导致服务端变成⼀个⼤接⼜,从⽽慢慢变成团队之间的纠纷点,故障点。...继承会有很多的坑,破坏内聚,也不⼀定合适。第四第五个,其实说的是访问通道的问题,只要做好访问通道的隔离就不会有问题。如果⼤家从这些原则的字⾯上的意思理解,怕是要⾛入误区了。

    35320

    看完这篇文章,让你对电容的作用更明白!

    图C1 耦电容:耦电容,是把输出信号的干扰作为滤除对象,耦电容相当于电池,利用其充放电,使得放大后的信号不会因电流的突变而受干扰。...滤波:这个对电路而言很重要,CPU背后的电容基本都是这个作用。 即频率f越大,电容的阻抗Z越小。...电解电容一般都是超过 1uF ,其中的电感成分很大,因此频率高后反而阻抗大。...输入信号由低向高变时,经过缓冲1后输入RC电路。 电容充电的特性使B点的信号并不会跟随输入信号立即变,而是有一个逐渐变大的过程。...变容二极管的调谐电路 因为lc调谐的振荡电路的谐振频率是lc的函数,我们发现振荡电路的最大与最小谐振频率之比随着电容比的平方根变化。 此处电容比是指偏电压最小时的电容与偏电压最大时的电容之比。

    45110

    揭密微信小游戏那些外挂

    原文链接:http://wetest.qq.com/lab/view/364.html WeTest 导读 张小龙:这个游戏发布以后,其实它的效果有点超出我们的预期,我们自己开玩笑说,这个游戏突然变成了有史以来可能用户规模最大的一个游戏...,对其他一些每天在练习,试图把自己的水平提高,而打一个高分的人就很不公平,他可能就没有动力继续练习,继续超越自己个人的最高分数。...所以这样一个行为,外挂行为其实破坏整个系统的规则,并且让规则立即变得失效。 所以,我们这个小游戏发布以后,我们就开始花了很多很多时间来打击外挂。...2.5D),所以我们测量到的直线距离在 2.5D 场景中是有变化的,虽然影响不大,但在游戏后期棋盘越来越小,距离越来越大时,容易凸现出问题来,所以关于距离的计算有几种不同的解决: [14.png] 拟合函数的细节可以参考...,自己编写了控制代码,把按压时间传输作为机械臂按下的停留时间,想法确定后便开始购置物品: [15.png] 到货后折腾一两个晚上,最后成功搭建好了,大家看看效果(电容笔偶尔还是触碰不良) 视频链接:https

    2.6K120

    经典回味:ResNet到底在解决一个什么问题呢?

    大意是神经网络越来越深的时候,传回来的梯度之间的相关性越来越差,最后接近白噪声。...图片A经过这个卷积有正响应,图片B可能就没有。 那能不能填上这个空缺,可以的。 resnet结构的机制大概是这样,3x3感受野没有提出来的特征,我用5x5的感受野填,还不行就用7x7填。...这个填空缺的思想在resnext上表现的更为明显,他用了一堆5x5填。...这个就是论文中提到的退化问题,而ResNet则正是为了解决这个问题。 下面进入碎碎念分析: deeper network准确率饱和后,很快就退化了 为什么这样呢?...答案无疑是否定的,人们发现当模型层数增加到某种程度,模型的效果将会不升降。也就是说,深度模型发生了退化(degradation)情况。 那么,为什么会出现这种情况? 1. 过拟合?

    1.4K50

    百亿节点、毫秒级延迟,携程金融基于 NebulaGraph 的大规模图应用实践

    这个例子是用一种边进行回溯,实际查询中可能涉及到 2~3 ,且存在异构边(打电话是一种边,点外卖又是一种边,下单酒店机票是一种边,都是不同类型的边),而这种异构图的数据都具有回溯特征,因此实际的关系人图回溯查询也变得复杂...3.3 实时欺诈图图片用户下单时,进入一个快速风控的阶段:通过基于关系型数据库和图数据库的规则进行模型特征计算,来判断这个用户是不是风险用户,要不要对该用户进行下单拦截(实时欺诈)。...查看这 5 个手机号关联的 uid 是不是超过了系统设定的热点值。如果说通过 mobile 查询出来关联的手机号、uid 过多的话,系统就会判断其为热点数据,不进行边结果返回。...:查询 ID 关联的手机号,需要满足对于这个手机号关联边不超过 3 个。...这里解释下为什么要限制关联边数量,因为我们正常个体关联边数量是有限的,会有一个对于大多数人的 P95 这样的阈值边数量,超过这个阈值就是脏数据。为了这个阈值校验, 就需要对每次查询的结果再多查询一

    86740

    如何用domain减少logger的传递

    logger 实例,实例中携带了 traceid: 为了让之后每个函数调用的日志都打印 traceid,我们要透传这个 logger => 封装的任何一个函数,最少都需要一个入参:logger。...问题分析 之所以需要透传,是因为不能简单的把这个 logger 作为一个 global 变量。 为什么不能把每个请求的生成的 logger 实例作为全局变量呢?...因为 JS 的执行方式:一个线程上,会在不同的请求间跳来执行。以一个 fetch 为例,一旦我们发起了一个网络 IO,当前线程并不会干等着 Response,可能反手去处理另一个用户请求了。...done') } 如果 logger 实例在全局,串在不同请求中。...这个过程直觉,相对于直接多线程编程,很难说 event-loop 是一个好的抽象,毕竟,一个好的抽象,是减少关注,也能用好功能。

    1.8K30

    伯克利的Salto跳跃机器人,用那么小的脚也可以精准着陆了!

    而且这些变化并不是渐进式的——这个小机器人的能力似乎已经突飞猛进。...正如我们所知,让Salto停止跳跃而不破坏自身的最佳方法是有人在它弹跳到空中时瞅准时机,将它直接捉住。Salto在跳跃方面的表现一直很惊艳,但它并不擅长着陆,不过现在,看这个! 厉害吧!...这种能力源于精确向目标点和平衡着陆的结合,它们使Salto可以更好控制下一,因为它有机会着陆并瞄准目标,而不是在跳跃时。...为什么Salto现在能着陆是件大事? Justin Yim:当跳跃者以一定角度着陆,其下降运动可以转化为大量的角动量。Salto的着陆角度必须非常准确,否则角动量太大,以至于反作用于轮尾无法抵消。...结合在狭窄支撑点上的固定着陆能力,我们希望这项研究让像Salto一样的机器人在像壁岩和树枝这样狭窄的立足点上跳来

    95620
    领券