apply,call,bind

本文介绍JavaScript中apply和call方法的区别与联系,重点解释如何通过这两种方法改变函数内部this的指向,以及bind方法的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

apply和call是函数传参的两种方式,但是他们常用的主要功能个人理解认为应该是扩展作用域。

相同之处:都表示调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。等同于B.call(A, args1,args2)。

不同之处:apply只接受两个参数,一个是在其中运行函数的作用域(即this),另一个是参数数组。

而call第一个参数和apply一样都是在其中运行函数的作用域,另一个是参数数列。这个方法主要用在js对象各方法相互调用的时候,使当前this实例指针保持一致,或者在特殊情况下需要改变this指针。如果没有提供thisObj参数,那么 Global 对象被用作thisObj。

补充:

call(this,...参数列表)立即调用

apply(this,[参数数组])立即调用

bind(this,,...可分次传入的参数列表);返回一个永久改变this指向的函数。不是立即执行。若要立即执行:bind(this,...list)()即可

关于bind:

bind()方法在ECMAScript5中新定义的,这个方法会创建一个函数的实例,其this值会被绑定到传给bind()函数的值,该函数可传入两个参数第一个参数作为this,第二个及以后的参数则作为函数的参数调用。具体作用如下:

1、创建绑定函数

就是当我们调用某些函数的时候是要在特定环境下才能调用到,所以我们就要把函数放在特定环境下,就是使用bind把函数绑定到特定的所需的环境下。

2、让函数拥有预设的参数

使用bind()方法使函数拥有预设的初始参数,这些参数会排在最前面,传给绑定函数的参数会跟在它们后面

3、setTineout()的使用

正常情况下,调用setTimeout的时候this会指向全局对象,但是使用类的方法时我们需要指向类的实例,所以要把this,绑定要回调函数方便继续使用实例

4、把类数组转换为数组。

利用call和apply去实现转换。

但是,个人理解,其常用作用是改变this的指向。

javascript方法--bind() - xxxxBW - 博客园

同时,在jQuery中也有bind().

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值