对call,apply,bind的理解

小米汽车技术路线 从小米的电子电器架构来看,行业内EEA已经由域集中逐渐过度到域融合+区域控制的架构并向着中央计算+区域控制的方向发展。 而小米汽车智驾算法也从基于高精地图模块化架构,到去高精地图模块化架构,再到端到端架构,这也正是行业对于智驾算法演进的共识。 阅读详情

常用的改变this指向的方法有call,apply,bind:

call

call方法:调用一个对象,简单理解为调用函数的方式,但是他可以改变函数的this指向;

fun.call(thisArg, arg1, arg2, …)
thisArg:在fun函数运行时指定的this值;
arg1,arg2:传递的其他参数,返回值就是函数的返回值,因为他就是调用函数;

function  Father() {this}

function  Son() {Father.call(this,1,2)}

因此当我们想改变this指向,同时想调用这个函数的时候,可以使用call,比如继承;

apply

apply方法:
fun.apply(thisArg, [argsArray]); // 调用函数
thisArg:在fun函数运行时指定的this值;
argsArray: 传递的值,必须包含在数组里面;
返回值就是函数的返回值,因为他就是调用函数;
因此apply主要跟数组有关系,比如使用Math.max()求数组的最大值;

var obj = {name: 'zhuyilong'}
function fn(arr) {
	console.log(this);
	console.log(arr);
	console.log(arr2);
}
var arr = [23, 23, 43, 34, 32];
var n = Math.max.apply(null, arr);
console.log(n);
bind

bind方法:不会调用函数,但是能改变函数内部this指向
fun.bind(thisArg, arg1, arg2);
thisArg:在fun函数运行时指定的this值;
arg1,arg2:传递的其他参数;
返回由指定的this值和初始化参数改造的原函数拷贝;

零基础学simulink仿真建模--基于Simulink进行近端策略优化(PPO)路径规划的仿真建模 特点高效性与稳定性:通过引入剪裁机制,在更新策略时限制步长,从而提高了训练过程的稳定性和效率。适用于多种动作空间:可以处理连续和离散的动作空间问题。无需模型:不需要预先知道环境的确切模型,适合复杂或未知环境。挑战收敛速度与稳定性:确保算法能够在合理的时间内找到近似最优解,并保持训练过程的稳定性。探索与利用平衡:在探索新路径和利用已知信息之间取得平衡。计算资源:对于大规模状态空间和动作空间,计算资源需求较高。首先明确要模拟的任务内容。目标(例如到达指定地点、避开障碍物等)。 阅读详情

相关推荐

PROFINET非周期数据通信实战:从报文解析到参数读写

本文详细解析了PROFINET非周期数据通信的实战应用,从报文结构到参数读写全流程。通过西门子PLC与驱动器的配置案例,深入讲解非周期通信在工业自动化中的关键作用,包括硬件选型、软件配置及常见问题排查,帮助工程师高效实现设备参数配置与诊断。

weixin_42522953的博客 514

对call、apply、bind的认识与理解

简述call、apply、bind的区别 call <script type="text/javascript"> function xiaohong(){ alert("小红"); } function xiaoming(){ return "小明"; } //xiaohong(); xiaohong.call(xiaoming) </script&...

weixin_41648626的博客 210

VHDL按键消抖(状态机版本)

检测下降沿:设置一个和,分别代表之前的之前和之前的信号状态,若两个信号key_in_d2=1,key_in_d1=0,他俩的not key_in_d2 and key_in_d1为1,则说明下降沿产生,把它设置为标志位key_flag。延时计数:50MHz的板子每次计数需要20ns,而抖动时间大约为5-10ms。所以取7ms,作为延时时间。可以看见当检测到下降沿时,开始计数计数计满再次检测,若为低电平则为按下按键,否则为抖动。通过检测下降沿来临,延时计数再次检测,如果为低电平则为按键按下。

qq_69639216的博客 1084

javascript中call()、apply()、bind()的用法终于理解

其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例 1 obj.objAge; // 17 obj.myFun() // 小张年龄 undefined 例 2 shows() // 盲僧  比较一下这两者 this 的差别,第一个打印里面的 this 指向 obj,第二个全局声明的 shows() 函数 this 是 window ;...

acoolgiser的博客 391

.NET适配HarmonyOS进展 1. 前言

目前国产化系统浪潮下,适配鸿蒙是中国软件大势所趋,.NET作为最适合开发客户端语言之一,适配鸿蒙系统(HarmonyOS Next)是目前.NET开发者最关心的事情。我目前业余时间正在移植Avalonia到HarmonyOS,去年在.NET Conf CN上分享过,目前又取得一点进展,所以本文把所有问题进行整合与大家进行分享。

2301_76476890的博客 1461

基于单光子探测的高重频多通道符合测距

TDC专栏之基于单光子探测的高重频多通道符合测距

sdau2005的博客 1204

对call、apply和bind的理解及他们的区别

说明 每个函数都包含两个非继承而来的方法,call()和apply(),其作用都是用来改变函数的执行环境。 call/apply/bind方法的来源 call、apply和bind方法其实都是继承自function.prototype中,属于实例方法。 console.log(Function.prototype.hasOwnProperty('call')); console.log(Function.prototype.hasOwnProperty('apply'));

reaaal的博客 650

Allegro DXF板框导入及将元器件精准放置到特定位置操作

DXF板框导入 选择File-> import -> DXF 点开DXF file 查找文件 3. 选择需要导入的DXF文件 4. 通常结构文件使用的是米制单位,将单位选择为mm,如果不确定DXF 图纸坐标大小,建议勾选incremental addition,软件根据实际DXF图纸大小自动调整背景坐标尺寸以适应DXF图纸 5.打开Edit/View layers 6. 勾选 select all,选择DXF文件所有层;class 一栏选择BOARD GEOMETRY;subcla

sinat_15677011的博客 1万+

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

why?call,apply,bind干什么的?为什么要学这个?   一般用来指定this的环境,在没有学之前,通常会有这些问题。 var a = { user:"追梦子", fn:function(){ console.log(this.user); } } var b = a.fn; b(); //undefined 我们是想...

weixin_34075268的博客 294

【25届数字IC秋招总结】面试经验13——豪威科技面试

25届数字ic面试记录———豪威科技

lalala0635的博客 363

基于深度学习DNN LSTM网络的光伏发电量预测 完整代码数据 可直接运行

基于深度学习DNN LSTM网络的光伏发电量预测 完整代码数据 可直接运行

2079

JavaScript进阶 —— 深入理解 call,apply 和 bind

在JavaScript 中,call、apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果。本文将对这三个方法进行详细的讲解,并列出几个经典应用场景。1、call。

金戈鐡馬 3868

Halcon实例转OpenCVSharp--粘连物体分割与计数(基于距离变换+分水岭算法) (附源码)

本文作者Color Space,文章未经作者允许禁止转载! 本文将介绍OpenCVSharp应用实例--粘连物体分割与计数(基于距离变换+分水岭算法)! 本文使用的OpenCVSharp版本---》v4.5.3。 实现目标:将下图中的硬币分割出来并计算数量。 预期效果图: ...

Color Space的博客 2420

怎么理解call,apply和bind的作用和区别?自己手动实现call,apply和bind.

怎么理解call,apply和bind的作用和区别? call,apply,bind都是用来改变this的指向 call和apply的区别传入的参数方式不相同,bind是返回一个新的函数,再执行调用。 首先看一下用法 function fn(a, b) { console.log(a, b, this, arguments.length); return a, b } const obj = { m: 3 } .

写点什么好 400

假人有限元模型

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

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

理解 call、apply、bind 原理,手写简单的 call、apply、bind 方法

手写apply、call、bind方法。彻底理解apply、call、bind原理。

qq_44900902的博客 461

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

call, apply, bind理解

先看几个有趣的题: function fn1(){ console.log(this, 1); } function fn2(){ console.log(this, 2); } fn1.call(); //输出 window 1 fn1.call(fn2); //输出 fn2 1 fn1.call.call(fn2); //输出 window 2 amazin...

weixin_43152527的博客 268

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

new、call、apply、bind实现的原理,是你理解的那样吗?

前言 在项目开发过程中,对于函数封装时,在调用函数内部方法时,有可能是window调用这时就会报错,常使用call,apply,bind来绑定this指向。 new的实现 当我们用new实例化一个构造函数,生成一个实例对象时,你想知道new到底做了什么吗? 来,客官里边请! 其实,它做了五件事: 获取构造函数 创建一个新对象 将函数的作用域赋给新对象(这里实际上就是生产了一个新的上下文) 执行函...

Greenhand_BN的博客 282

apply、call、bind的用法和理解

1.apply方法调用一个函数,其具有一个指定的this值,参数为数组或者类数组的对象。 2. 1. call(obj, param1, param2)/apply(obj, [param1, param2]) 调用/执行函数只是强制指定函数中的this为第一个参数指定的对象如果函数执行需要传参数, call是依次传递, apply需要封装成数组传递 2. bind() 返回一个新函数, 不会自动执行, 需要手动执行强制指定函数中的this为第一个参数指定的对象...

weixin_45392559的博客 856

javascript中的 bind、apply和call的理解

这三个函数在实际使用中 可能会产生意想不到的好效果 基本理解: func.bind(context, arg1, arg2, …) 这个函数 会返回一个新函数,新函内的上下文 “this”,会被bind()中的第一个参数代替,新函数的函数参数,会被bind()函数的第二个参数及后续参数 一一替换 理解第一步: var func = function() { console.log(this)...

Applosl的博客 184

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的理解。

关于call、apply、bind的部分理解

weixin_43660344的博客 215

JavaScript中bind、apply、call的理解

JavaScript中bind、apply、call的理解

GLimerence的博客 1481

bind、apply、call的理解

一直感觉代码中有call和apply就很高大上(看不懂),但是都草草略过,今天非要弄明白!以前总是死记硬背:call、apply、bind 都是用来修改函数中的this,传参时,call是一个个传参,apply是数组形式传参,call和apply立即执行并且返回值是你调用的方法的返回值,若该方法没有返回值,则返回undefined。bind是改变this后返回一个新的函数,他不会立即执行。死记...

weixin_30518397的博客 79

对于call,apply,bind 的理解

JavaScript 中 call()、apply()、bind() 的用法 之前对与JavaScript中的call,apply,bind这几个方法一直理解的很模糊,今天总结一下。 例1 var name = '小王', age = 20; var obj = { name: '小张', objAge: this.name, ...

weixin_30832351的博客 153

call,apply,bind的理解

call,apply,bind均是用于改变this指向。 三者相似之处: 1:都是用于改变函数的this指向。 2:第一个参数都是this要指向的对象。 3:都可以通过后面的参数进行对方法的传参。 let obj = { address: '北京', age: 18 } let address = '上海' var age = 20 le...

weixin_30307921的博客 203

理解JavaScript中的apply,call,bind方法

前言: JavaScript中的call(), apply()和bind()是Function.prototype下的方法,都是用于改变函数运行时上下文(即:call()、apply()、bind() 都是用来重定义 this 这个对象的),最终的返回值是你调用的方法的返回值,若该方法没有返回值,则返回undefined。 apply() apply()的第一个参数是null,在非严格模式下,...

circle 284
上一篇: 微信小程序使用OCR进行身份证验证
下一篇: 使用rem布局编写的大致流程
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值