call(),apply(),bind()的异同

人工智能顶会投稿指南:CCF-A类会议ACL、ICML、NeurIPS、ICLR的投稿周期与影响力解析 本文详细解析了CCF-A类会议ACL、ICML、NeurIPS、ICLR的投稿周期与影响力,涵盖各会议的投稿时间线、评审特点及录用率。ACL注重自然语言处理,ICML强调机器学习理论,NeurIPS覆盖神经信息处理,ICLR聚焦表征学习。文章还提供了实战投稿策略,帮助研究者提升投稿成功率。 阅读详情

call(),apply(),bind()的异同

大家都知道在函数中,最耐人寻味的就是prototype属性了,对于ECMAScript中的引用类型而言,prototype是保存它们实力方法的真正所在。
诸如toString()和valueOf()等方法都保存在prototype名下,只不过是通过各自对象的实例访问。在创建自定义引用类型以及实现继承时,prototype属性的作用是极为重要的。
每个函数都包含两个非继承而来的方法:apply()和call(),它们都是在特定的作用域中调用函数,实际上就是设置函数体内this对象的值。

1.apply()

apply()接收两个参数,第一个是在其中运行函数的作用域,另一个是参数数组。其中第二个参数可以是Array的实例,也可以是arguments对象;

1 function sum(num1, num2) {
 2     return num1 + num2;
 3 }
 4 function callSum1(num1, num2) {
 5     return sum.apply(this, arguments); // 传入arguments对象
 6 }
 7 function callSum2(num1, num2) {
 8     return sum.apply(this, [num1, num2]); // 传入数组
 9 }
10 console.log(callSum1(10, 10)); // 20
11 console.log(callSum2(10, 10)); // 20

解释:上述代码callSum1()在执行sum()函数的时候传入了this作为this值(因为是在全局作用域中调用的,所以这个this就是window对象),以及第二个参数arguments;
   而callSum2()也调用了sum()函数,但是传入的是this和一个数组;他们的执行结果是相同的;
⚠️上述代码执行是在非严格模式下,若是严格模式下this的值会是undefined;

2.call()

call()与apply()作用相同,区别仅在于接收参数的方式不同,call()的第一个参数也是this,但是从第二个参数就要逐个的进行列举了;

function callSum3(num1, num2) {
    return sum.call(this, num1, num2);
}
console.log(callSum3(10, 10)); // 20

总结一下call()和apply(),它们的真正用武之地是----扩充函数运行的作用域
举个🌰:

window.color = "red";
        var o = {
            color: 'blue'
        }
        function sayColor() {
            console.log(this.color);
        }
        sayColor(); // red
        sayColor.call(this); // red
        sayColor.apply(window); // red
        sayColor.call(o); // blue 解释:这里的this变成了对象o,而不是window

3.bind()

该方法会创建一个函数的实例,其this值会被绑定到传给bind()函数的值,例如

// 创建了两个函数实例,它们都需要手动的去执行一下
var exFunc = sayColor.bind(o);
var exFunc1 = sayColor.bind(this);
exFunc(); // blue
exFunc1(); // red

总结:call()和apply()都会立即执行,而bind()会先创建一个函数实例,然后手动的去执行;它们都会继承传递给它们的函数的属性和方法。

WPF在特定领域的应用:打造一款专业的图像编辑工具 WPF在特定领域的应用:打造一款专业的图像编辑工具,在软件开发的广阔领域中,Windows Presentation Foundation(WPF)以其强大的图形渲染能力和丰富的用户界面控件,为开发者提供了构建高性能、美观应用程序的平台。图像编辑工具作为一种对图形处理要求极高的应用类型,WPF 的特性使其成为理想的选择。本文将深入探讨如何使用 WPF 打造一款专业的图像编辑工具,涵盖从基础概念到实际代码实现的各个方面。 阅读详情

相关推荐

PICO SCOPE 二次开发

基于C#开发一个简单的PICO示波器的上位机工作,与MCC600运动控制卡一起,实现数据自动采集

nixoncheng的博客 1148

call()、apply()、bind() 区别、使用场景、实现方式

call()、apply()、bind() 区别、使用场景、实现方式

Lyrelion的博客 2823

【js逆向学习】新手视角破解「广东省公共资源交易平台」

学习js逆向,破解广东省公共资源交易平台,详细记录个人探索、踩坑全过程。网站地址: aHR0cHM6Ly95Z3AuZ2R6d2Z3Lmdvdi5jbi8jLzQ0L2p5Z2c=仅供学习参考,如有疑问欢迎交流,一起学习进步。

DCSDA的博客 3320

js的call()、apply()、bind()解析

一、call()、apply()、bind()的异同 call()、apply()、bind()都是用于改变this指向的方法,不同点参数定义不太相同 call()是接收一个及其以上的参数,第一个参数表示this要指向的对象,其余参数表示 Array.prototype.slice.call() 实现将一个具有length属性的对象转化为数组 Array:数组的构造函数(数组类) prototype: 原型对象(构造函数的一个属性); slice: 是一个数组方法,他用于截取数组。两个参数一个表示截取开始位

qq_44308109的博客 5090

simulink的电动汽车制动系统热管理仿真

本文系统研究了电动汽车制动系统热管理仿真技术。通过建立机电液多物理场耦合模型,分析了不同工况下的动态热平衡特性。提出基于MPC的动态调节和NSGA-II多目标优化算法,使电池温度波动降低60%。创新性采用石墨烯相变材料与微通道液冷复合技术,冷却系统能耗减少40%。研究构建了完整的工程验证平台,涵盖200kW电制动测试台和高精度热成像系统。展望指出,未来将结合Transformer预测和强化学习算法,进一步优化热管理策略。该研究为电动汽车制动系统热管理提供了从理论建模到工程实施的完整解决方案。

xiaoheshang_123的博客 122

动力学约束下的运动规划算法——状态栅格规划器(State Lattice Planner)

A*、RRT等算法建立的用于路径搜索的图模型是不考虑机器人的动力学约束的,其构建的图模型的两个相邻节点之间的路径可能是不可行的,或者很难被机器人跟踪的,现在我们想要使得图中相邻两个节点间的连接是一种满足动力学约束的可行的连接,那么如何构建一个这样的图呢? 构建这样的图通常有两种方法:第一种是基于控制空间的采样(正向方法)

慕羽★的博客 3105

call()、apply()和bind()方法有什么区别

call()apply()和bind()是 JavaScript 中 Function 对象的三个方法,它们都与函数的上下文(即this。

weixin_50914755的博客 464

纳米尺度仿真软件:GROMACS_(3).分子动力学模拟原理

分子动力学(MD)模拟是一种强大的计算方法,通过数值积分牛顿运动方程,追踪粒子在时间上的位置和速度变化,提供关于体系动力学行为的详细信息。选择合适的力场、设置初始条件、应用边界条件、控制温度和压力、选择合适的时间步长、计算能量和力,是 MD 模拟的关键步骤。通过这些步骤,可以对各种化学、生物和材料体系进行模拟和分析,揭示其结构、动力学和热力学性质。高级应用如反应路径模拟和蛋白质折叠研究,进一步扩展了 MD 模拟的应用范围。

kkchenjj的博客 1100

JavaScript中call()、apply()和bind()方法的详细用法与区别

JavaScript中call()、apply()和bind()方法的详细用法与区别

2301_80270696的博客 1739

1、基于改进3D卷积神经网络的阿尔茨海默病分类

本文提出了一种基于改进3D卷积神经网络的阿尔茨海默病(AD)分类方法,利用3D CNN对预处理后的T1加权MRI数据进行空间特征提取,并在VGG网络结构中引入类似ResNet的跳跃连接以缓解模型退化和过拟合问题。实验基于ADNI数据集,包含AD、MCI和NC三类样本,结果表明改进后的3D VGG模型在AD/NC、MCI/NC及多分类任务中均取得了优异性能,尤其在AD/MCI/NC分类中准确率达到98.50%,优于现有典型3D深度学习方法。研究验证了3D CNN在脑部疾病诊断中的有效性,并为AD的早期识别提供

kk1234的博客 90

基于分水岭分割进行肺癌诊断

近年来,肺癌的发病率和病死率均迅速上升,目前已居所有癌症之首。随着肺癌病人数量的增加,医生对肺部 CT 图像进行研判的工作量也增加了不少,在这种情况下难免工作效率降低甚至会出现误诊。为了帮助医生减少重复性工作,对肺部 CT 图像进行计算机辅助检测的技术就被广泛应用于对肺癌的诊断和治疗过程中。医学 CT 图像处理主要是研究医学图像中的器官和组织之间的关系,并进行病理性分析。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1568

apply()、call()、bind()

在JavaScript中,call、apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向。apply和call方法、bind方法都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()、bind()方法时,就会改变thi...

aizou6838的博客 187

【1.2】Costas环的基本原理概述

Costas环是一种用于载波恢复的相干解调技术,可直接从BPSK等抑制载波信号中恢复本地载波并完成解调。其核心结构包含同相/正交双支路处理,通过混频、低通滤波后,利用I/Q支路信号乘积进行相位误差检测,经环路滤波器调节VCO输出频率,实现载波同步。课程将重点讲解Costas环的MATLAB仿真实现、系统性能分析及FPGA开发,包括信号产生、频偏模拟、滤波器设计等模块,并通过AWGN信道和不同频偏条件下的测试验证系统性能。该技术无需单独提取载波,在数字通信系统中具有重要应用价值。

fpga/matlab/simulink算法仿真工程 451

call()、apply()、bind()的异同

call()、apply()、bind()的异同 定义: call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。 apply()方法调用一个具有给定this值的函数,以及以一个数组或类数组对象的形式提供的参数。 bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。 call()、apply()和bind()都可以改变this对象的指向 区别1: call

Hhuangtu的博客 494

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ssm框架搭建

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

javascript中call()、apply()、bind()的用法与异同

其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例 1 var name = '小王', age = 17; var obj = { name: '小张', objAge: this.age, myFun: function() { console.log(this.name + "年龄" + this.age) } } obj.objAge; // 17 obj.myFun() // 小张年龄 undefined 例 2 var fav = '盲僧';

weixin_43867717的博客 231

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Javascript中call(),apply(),bind()方法、区别与异同

一 call()方法: call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. Call() 语法 fun.call(thisArg[, arg1[, arg2[, ...]]]) Call() 参数 thisArg 在fun函数运行时指定的this值。需要注意的是,指定的this值并不一定是该函数执行时真正的this值,如果这个函数处于非严格模式下, 则指定为null和undefined的this值会自动指向全局对象(浏览器中就是window对象),同时

ArtLife_的博客 443

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JS中 bind()的用法,call(),apply(),bind()异同点及使用,如何手写一个bind()

JS中 bind()的用法,call(),apply(),bind()异同点及使用,如何手写一个bind() 传参方式不同,call()和bind()是按照顺序传参,apply()是通过数组/伪数组传参。 执行机制不同,call()和apply()是立即执行函数,bind()不会立即执行函数,而是会返回一个修改过this的新函数。 手写一个bind()

sinat_51673411的博客 314

函数的内置方法call()、apply()、bind()的异同

函数的内置方法call()、apply()、bind()的异同

LxyingINGing的博客 508

call(),apply(),bind()三个方法的异同以及各自的应用

我们知道this指向一般都是指向调用: ①如普通函数调用时,指向window; ②构造函数调时,指向实例对象; ③对象方法调用时,指向该方法所属的对象; ④事件绑定方法调用时,指向绑定事件对象; ⑤定时器函数和立即执行函数调用,指向window。 在我之前谈到的es6之前,运用构造函数继承父构造函数的属性时,如果在子构造函数直接调用Father()时,这时子构造函数里面是没有任何继承父类的属性的,这就是因为this的指向问题所导致的。调用父构造函数时this是指向父构造函数创建出来的实例对象,这

weixin_45785651的博客 198

apply(),call()和bind()的异同

apply和call:改变函数this指向 函数对象.call(被改变的this指向,函数对象的参数1,参数2.。。) 1,都是用来改变this指向的 2,bind针对匿名函数 apply和call针对于有名函数 3,apply的第二个参数是一个数组 4.apply和call是函数调用,bind是生成了一个新的函数对象 ...

Lau的博客 145

谈谈call(), apply(), bind()的异同

大家都知道在函数中,最耐人寻味的就是prototype属性了,对于ECMAScript中的引用类型而言,prototype是保存它们实力方法的真正所在。 诸如toString()和valueOf()等方法都保存在prototype名下,只不过是通过各自对象的实例访问。在创建自定义引用类型以及实现继承时,prototype属性的作用是极为重要的。 每个函数都包含两个非继承而来的方法:apply(...

weixin_30872733的博客 110

bind()、call()和apply()

cxx

weixin_44751462的博客 318

改变this指向——call() ,bind(), apply()

call()、bind()、apply() 都是用来重定义this这个对象的, 解决this的指针指向问题这三个结果都一样 bind后面多一个括号是因为 bind返回值是一个函数加上()编程立即执行函数。

weixin_45662026的博客 180

call、bind、apply的理解

call、bind、apply的来源 call、apply和bind方法其实都是继承自function.prototype中,属于实例方法。 console.log(Function.prototype.hasOwnProperty('call')); console.log(Function.prototype.hasOwnProperty('apply')); console.log(Function.prototype.hasOwnProperty('b

weixin_49920110的博客 417

前端学习笔记(二):call 、apply和bind

一、了解apply(),call(),bind() JavaScript中的每一个Function对象都有一个bind()、apply()方法和一个call()方法,它们的语法分别为: bind()方法 fun.bind(thisArg[, arg1[, arg2[, ...]]]) apply()方法 function.apply(thisObj[, argArray]) call()方法 fu...

weixin_34409357的博客 178

详解 JS 函数的 call、apply 及 bind 方法

都能够改变目标函数执行时内部 this 的指向;方法的第一个参数用于指定函数执行时内部的 this 值;支持向目标函数传递任意个参数;若不向方法的第一个参数传值或者传递 undefined、null,则在 JavaScript 正常模式下,目标函数内部的 this 指向 window 对象,严格模式下,分别指向 undefined、null。

奕玄的个人博客 479
上一篇: 前端面试题第一季
下一篇: 函数内部this的指向
Web_front
博客等级 码龄7年 5粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值