js之call() apply() bind() $proxy()的总结

U8 API接口开发踩过的坑 阅读详情

这里写图片描述

关于this的使用

先贴一段代码

window.name = 'window';
var obj = {
    name:'I'
}
function foo(name,sex){
    setTimeout(function(){
        console.log(this.name+' love '+name+' cause '+name+' is a '+sex);
    },100);
}
//foo('you','girl');  //window love you cause you is a girl
//foo.call(obj,'you','girl');  //window love you cause you is a girl
  1. 上述函数中this是定义在setTimeout定时器函数内部,所以this指向window,所以执行foo() this指向window.
  2. call是指将foo函数中的this指向obj(即在obj对象内部环境执行foo函数),此时的foo函数的this并不是setTimeout函数内部的this

如想用到foo函数内部的this,可以先将this用一个变量保存起来,代码如下

function foo(name,sex){
    var that = this;
    setTimeout(function(){
        console.log(that.name+' love '+name+' cause '+name+' is a '+sex);
    },100);
}
foo('you','girl');  //window love you cause you is a girl
foo.call(obj,'you','girl');  //I love you cause you is a girl
foo.apply(obj,['you','girl']); //I love you cause you is a girl

当用ES6箭头函数时,内部的this始终是指向一开始创建的对象(函数)

function arrow_foo(name,sex){
    setTimeout(() => {
        console.log(this.name+' love '+name+' cause '+name+' is a '+sex);
    },100);
    }
arrow_foo('you','girl');  //window love you cause you is a girl
arrow_foo.call(obj,'you','girl'); //I love you cause you is a girl

将上述ES6代码用谷歌转化工具traceur转换成ES5,原理就一目了然了:代码如下

function arrow_foo(name, sex) {
    var $__0 = this;
    setTimeout(function() {
      console.log($__0.name + ' love ' + name + ' cause ' + name + ' is a ' + sex);
    }, 100);
}

一段代码总结call,apply,bind,$proxy

function arrow_foo(name,sex){
    setTimeout(() => {
        console.log(this.name+' love '+name+' cause '+name+' is a '+sex);
    },100);
    }
arrow_foo('you','girl');  //window love you cause you is a girl
arrow_foo.call(obj,'you','girl'); //I love you cause you is a girl
arrow_foo.bind(obj,'you','girl')();//I love you cause you is a girl
$.proxy(arrow_foo,obj,'you','girl')();//I love you cause you is a girl

总结

由以上代码可以总结出:
1. foo.call()与foo.apply()原理是一样的,将foo函数的this指向指定的对象(或者表述为在指定对象的上下文环境中运行foo函数);
2. bind(obj)与$proxy(obj)不同的是他们返回的是一个新的函数,该函数的this执行指定的对象obj。

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

相关推荐

YOLOv5改进——添加SimAM注意力机制

这样可以使注意力机制看到整个backbone部分的特征图,将具有全局视野,类似于一个小的transformer结构。注意:很多改进教程都是将代码直接复制到common.py文件,如果改进机制多了容易造成混乱。在models文件夹下新建modules文件夹,在modules文件夹下新建一个py文件。这里为simam.py。在models文件夹下,复制yolov5s.yaml文件,粘贴并重命名为yolov5s-simam.yaml。运行yolo.py,出现刚刚加入的SimAM注意力机制,说明加入成功。

2302_80099075的博客 1654

MuleSoft企业级LLM编排:安全合规的AI集成实践

大语言模型(LLM)在企业落地时,面临安全合规、协议异构与可观测性缺失三大核心挑战。其本质并非单纯调用API,而是需嵌入现有SOA架构,实现可治理、可审计、可回滚的服务编排。MuleSoft凭借API全生命周期管理、策略驱动的流量控制、原生多协议支持及DataWeave数据转换能力,成为连接LLM与ERP/CRM/遗留系统的关键中枢。它将LLM封装为标准化智能服务节点,支撑保险核保、设备预测性维护等高合规场景,真正解决‘LLM如何在银行核心系统里活下来’这一工程难题。

mybwu_com的专栏 518

用废旧汽车电池DIY家用UPS:手把手教你低成本搭建Wi-Fi不断电系统

本文详细介绍了如何利用废旧汽车电池DIY低成本家用UPS系统,确保Wi-Fi设备在断电时持续供电。通过精选材料、电路搭建和安全防护,实现高效稳定的电源转换与智能切换,成本仅为市售UPS的三分之一。特别适合家庭办公和远程工作者提升网络供电可靠性。

weixin_29200485的博客 468

JS基础----call和apply方法、代理Proxy的使用、JS中defineProperty用法

JS基础----call和apply方法、代理Proxy的使用、JS中defineProperty用法

Dormiveglia-flx的博客 649

从农田到城市:如何利用NDVI和缨帽变换提升遥感图像分类精度?

本文深入探讨了如何利用NDVI(归一化差值植被指数)和缨帽变换(Tasseled Cap Transformation)两大关键技术,有效提升从农田到城市等复杂场景的遥感图像分类精度。文章通过剖析地物光谱特征,对比了原始波段与衍生特征的优劣,并提供了在ENVI、ArcGIS及Python环境中的具体操作指南与实战策略,旨在帮助从业者构建更鲁棒的特征工程流程,从而解决地物混淆、边界模糊等常见分类难题。

redis7keeper的博客 867

H3C交换机命令大全,分模块好记忆!

在深入命令之前,我们先来了解H3C交换机的命令行基础。<H3C>[H3C]常用基础命令如下:这些基础命令是操作H3C交换机的敲门砖,熟练掌握后,我们将按模块深入探讨更具体的配置命令。H3C交换机的命令可以按功能模块分类,包括系统管理、接口配置、VLAN操作、链路聚合、路由配置、安全管理等。

网络技术联盟站 784

javascript的apply()、call()、bind()和jquery的$.proxy()

太多资料可以搜,不重复太多内容了。 都是用于处理上下文的。 随意粘贴个参考文章 http://www.cnblogs.com/cosiray/p/4512969.html#undefined

festone000的专栏 1846

2023年全国职业院校技能大赛 网络系统管理服务模块 Linux部分讲解

网络系统管理,Linux,服务部署,Chinaskills,2023国赛

weixin_62926639的博客 1549

js改变this指向方法call,apply;jq改变this指向方法$.proxy()

这些都是昨天看的一些博文,觉得很好,所以总结一下,避免自己不小心就忘掉了,当然后面有时间肯定会更加深入研究 http://www.cnblogs.com/qzsonline/archive/2013/03/05/2944367.html call()与apply()区别 一、方法的定义  call方法:  语法:call(thisObj,Object)

bluefish_flying的博客 5136

【网络安全】基于Python的威胁情报自动推送系统设计与实现(含源码)

本文介绍了一个基于 Python 开发的威胁情报自动推送系统的设计与实现。该系统通过集成 AbuseIPDB 威胁情报数据源与即时通讯平台,实现了恶意 IP 地址的自动化采集、筛选与实时推送功能。文章详细阐述了系统的技术架构、核心算法、数据流转过程以及关键代码实现。系统采用多线程并发架构,通过 Long Polling 技术实现实时消息接收,支持自动推送和交互式查询两种工作模式。文章还提供了完整的部署指南和使用说明,包括环境配置、运行方式等内容。

等风来 313

无人机正射影像DOM孔洞修补的另一种方法并调整影像色差(附GlobalMapper24安装包(中文注册版))

之前介绍了用GlobalMapper联合PhotoShop对无人机正射影像DOM进行破洞修补,但是ps修图非常耗时,需要耐心和足够的细心。对于大面积的水域空洞,纹理特征都差不多,没必要修补得那么细致入微,本文介绍另一种直接在Global Mapper中快速修补大面积水域空洞的方法。 一、Global Mapper中检查数据 二、使用“数字化”工具,绘制需要补洞的多边形区域 三、导出绘制好的矢量区域 四、打开影像下载软件,选择影像图源 五、下载影像 六、调整影像的色差 七、合并影像并输出 八、检查结果数据

从地图看世界的专栏 1549

jQuery中$.proxy()的原理和使用

jQuery.proxy(),接受一个函数,然后返回一个新函数,并且这个新函数始终保持了特定的上下文(context )语境。 jQuery.proxy( function, context ) function将要改变上下文语境的函数。 context函数的上下文语境(`this`)会被设置成这个 object 对象。 jQuery.proxy( context, name )

somanygenius的博客 7242

【原理图PCB专题】Cadence 17.4版本导出excel版本坐标文件

Cadence 17.4版本导出坐标文件往往都是txt格式,并且无标题、导出时间、导出设计工程多名称等信息。那么怎么样才能导出有带这些信息的excel版本并格式好看的坐标文件呢?

一点硬件 2764

JavaScript中call,apply,bind方法的总结。

为什么要学习this?如果你学过函数式编程,面向对象编程,那你肯定知道干什么用的,如果你没有学过,那么暂时可以不用看这篇文章,当然如果你有兴趣也可以看看,毕竟这是js中必须要掌握的东西。   例子1: function a(){    var user = "追梦子";    console.log(this.user); //undefined    console.log(thi

JKxiaoxing的博客 577

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

深入浅出Javascript中apply、call和bind以及它们的妙用

此文为转载的,感谢原文作者——chokcoco(伯乐在线),原谅我做了一些纠正和改动。因为此文确实很优秀,所以我冒着风险转载了过来。如果,有任何觉得我有侵权行为,我立马删除文章!一、引言这篇文章实在是很难下笔,因为网上相关文章不胜枚举。巧合的是前些天看到阮老师的一篇文章的一句话:“对我来说,博客首先是一种知识管理工具,其次才是传播工具。我的技术文章,主要用来整理我还不懂的知识。我只写那些我还没有完全

JimmyLuo17的博客 619

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JS方法代理

作者:Jiang, Jilin JS作为一门脚本语言。十分easy上手。外加其灵活性,能够轻而易举地扩展功能。今天,我们就聊聊JS的方法代理。方法代理是脚本语言中常见的方法扩展形式。这样的灵活的形式长处在于遇到复杂的JS代码须要扩展时,能够相对简单的抽取并改动。可是,其缺点也十分明显,会造成代码的碎片化,因而是一把双刃剑。 基本形式 var _func = obj...

weixin_30537391的博客 416

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Javascript漂流记(下)__bind方法使用、bind方法实现及jQuery.proxy()使用

前面我们学习了改变this指向的两个方法:call、apply 下面要隆重介绍第三种改变this指向的方法 ——bind 首先我们通过非常简单的一小段代码看一下bind的基本使用: var x = 10; function show(){ console.log(this.x);//10 20 } show(); var aO ...

AquamanTrident的博客 480

JS代理Proxy

JS代理Proxy 代理是目标对象的抽象。目标对象既可以直接被操作,也可以通过代理来操作。 但直接操作会绕过代理施予的行为。 首先就是空代理,就是什么也不做,在代理对象上执行的所有操作都会无障碍地传播到目标对象。 代理是使用 Proxy 构造函数创建的。这个构造函数接收两个参数:目标对象和处理程序对象。缺少其中任何一个参数都会抛出 TypeError。 我们来看看例子 const a = { name: 'Sonic' }; const handler = {}; const proxy = n

SOUIC的博客 4818

代理模式(proxy)

前言 代理模式是一个大类,而且会经常用到,它包含了远程代理,虚拟代理,防火墙代理等,当然还有动态代理了,学过spring的人应该不陌生。 各种代理模式样式差别很大,不容易从程序上辨认,但是可以从功能上认出来,今天我就举个例子聊聊代理模式最基本的样子,从例子中认识代理模式。 举例为静态代理的基本应用,稍后再介绍代理模式的一些特点。   情境引入        本次我们以滴滴为例...

zhen921的博客 1万+

动态代理proxy与CGLib的区别

昨天被人问及动态代理与CGlib的区别,赶紧回顾一下: 什么是代理?静态代理与动态代理静态代理实例JDK动态代理实例CGLib 简介CGLib 与JDK动态代理的区别     代理模式是Java中常见的一种模式,英文名字叫走Proxy或者Surrogate,代理的本意是一个人代表另一个人,或者一个机构代表另一个机构,采取行动,因而,代理和现实生活中的中介有很大的类似,你买房子、卖房

敬诚为之 3万+

【SGX】Ocall Proxy处调用Ocall出现异常的解决办法

【SGX】Ocall Proxy处调用Ocall出现异常的解决办法

小气球归来的博客 424

一段js实现复制文本内容到剪切板

直接上代码:<script type="text/javascript"> function copyUrl2() { var Url2=document.getElementById("biao1").innerText; var oInput = document.createElement('input'); oInput.value =

csx blog 3万+

layer弹出iframe的高度不自适应。一直是150px

layer弹出iframe的高度不自适应。一直是150px通常我们用layer都是点击事件中弹出layer,如下:$("#loginbtn").click(function(){     layer.open({     type: 2,     title: '欢迎登录',     skin: 'login-class',     maxmin: false,     title: false,...

csx blog 1万+

Javascript组件化开发设计思想

一、引言 项目中经常用web弹层组件-layer,其常见的代码如下:   使用的时候很方便,弹窗的宽高、内容、标题、关闭按钮等弹窗的状态我们都可以通过配置参数配置。layer弹层组件用同一套代码来满足不同的弹窗层表现的需求,这便是组件开发的强大之处。 那么,什么是组件开发、为什么要采用这种开发形式、怎么进行组件化开发呢?下面就来一探究竟吧。   二、什么是组件化开发 当多组功能相...

csx blog 9349

利用ES6中的模板字符串轻松实现多行和字符串值的插入

多行字符串// Multiline strings `In JavaScript template strings can run over multiple lines, but double and single quoted strings cannot.` // 如打印或者输出,是多行的结构字符串值的插入// String interpolation var name = 'Bob',

csx blog 2297

单页切屏效果的原理

前言在实际的开发过程中碰到的单页切屏效果,稍作改动,就可以做成如下优雅的幻灯片效果了。 原理文档结构如下,监测鼠标滚轮的滚动事件,相应的执行切屏动画。实现过程中的注意事项: 鼠标滚轮事件的兼容性问题: W3C并没有对鼠标滚轮事件进行规范,各浏览器厂商封装了不同的实现方法,事件属性也不一样,FireFox用了一个私有实现DOMMouseScroll。其他浏览器都是用mousewheel实现,所以需

csx blog 2060
上一篇: 移动端弹出阴影遮罩的几点问题和解决方法
下一篇: 通过闪烁标题来实现web消息通知的小demo
小菜101
博客等级 码龄10年 16粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值