call()、apply()、bind()用法跟区别

本文详细介绍了JavaScript中的call(), apply(), bind()方法,重点讨论了this的动态绑定特性。通过实例展示了如何使用这些方法改变函数的上下文并传递参数。call()和apply()主要区别在于参数传递方式,bind()则用于创建新函数并固定this值。了解这些方法对于深入理解JavaScript的函数调用机制至关重要。
摘要由CSDN通过智能技术生成

目录

call()

apply()

bind()


名词解释来源MDN

  • call()

call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。

首先需要搞明白,this的概念

与其他语言相比,函数的 this 关键字在 JavaScript 中的表现略有不同,此外,在严格模式和非严格模式之间也会有一些差别。

在绝大多数情况下,函数的调用方式决定了 this 的值(运行时绑定)。this 不能在执行期间被赋值,并且在每次函数被调用时 this 的值也可能会不同。ES5 引入了 bind 方法来设置函数的 this 值,而不用考虑函数如何被调用的。ES2015 引入了箭头函数,箭头函数不提供自身的 this 绑定(this 的值将保持为闭合词法上下文的值)

在控制台中打印this

 此时我们知道,this指向window:this==window,this可以使用window的所有方法

解释:定义了一个对象a,定义了一个Person方法,使用Person.call(a,"boy",20)调用Person()方法,并且赋值,由此可见,a就是要改变this指向的那个对象,后面两个是所传的参数。此时我们可以对比下this打印的值来做出判断

 未使用call()之前的

 使用call()之后

 此时的this==a

  • apply()

apply() 方法调用一个具有给定this值的函数,以及以一个数组(或类数组对象)的形式提供的参数。

 call()方法的作用和 apply() 方法类似,区别就是call()方法接受的是参数列表,而apply()方法接受的是一个参数数组。

  • bind()

bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值