5.7 call bind apply的使用

本文详细解析JavaScript中apply、bind和call方法的用法,探讨它们如何处理参数传递,以及在实际编程中的应用场景和区别。重点讲解了在多参数情况下的行为和注意事项。

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

1、先看示例

const a = function (pars){
    console.log(pars)
}
function f(){
    return a.apply(a,arguments)
}
function g(){
    return a.bind(a,...arguments)()
}
function e(){
    return a.call(a,...arguments)
}
f('apply')
g('bi','nd')
e('call')

/**
output:
apply
bi
call
*/

apply方法只有两个参数

如果需要使用arguments接收多个参数,需要使用数组,如果没有使用[arguments],但是却传递了多个参数,则最终指挥输出第一个参数,如下

const a = function (pars){
    console.log(pars[0] + pars[1])
}
function f(){
    return a.apply(a,[arguments])
}
function h(){
    return a.apply(a,arguments)
}
f('apply','apply')
//output:    f():applyapply  h():apply

bind方法是可以接收多个arguments

//如果bind使用了...arguments,调用时传递了多个参数,但是方法里却只有一个形参
//最终也只会输出第一个参数,即形参要与实参一一对应
const a = function (pars){
//需要输出具体的下标
    console.log(pars[0])
}
function g(){
//没有使用...arguments
    return a.bind(a,arguments)()
}
//如果传递多个参数,则下标是哪个,就输出哪个
g('bi')

//output:bi

//使用...arguments,则可以接受任意多的参数
function j(){
    return a.bind(a,...arguments)()//与call和apply不同,后面多了对括号
}

call与bind相同,bind后面比call多一对括号

callbindapply是JavaScript中的函数方法,用于改变函数的执行上下文,即this的指向。 1. call函数:通过call方法,可以调用一个函数,并且可以指定函数内部this的指向。此外,call还可以接受多个参数,以逗号分隔。参数的数量和类型由函数自身决定。 2. apply函数:与call类似,apply也可以调用一个函数,并且可以指定函数内部this的指向。但是,与call不同的是,apply接受的参数是一个数组,数组的每个元素会作为参数传递给函数。 3. bind函数:bind函数并不会立即调用函数,而是返回一个新的函数,这个新函数的执行上下文被永久地绑定到bind方法的第一个参数上。当调用这个新函数时,函数的this指向被绑定的对象。同时,bind方法也可以接受多个参数,并且这些参数会被传递给绑定的函数。 这些函数在实际应用中有着不同的场景。例如,callapply经常与数组相关,可以方便地对数组中的元素进行处理,如获取最大值、最小值等。而bind函数则用于在事件处理函数中绑定this的指向,以确保函数在执行时的上下文正确。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [javascript中call,apply,bind函数用法示例](https://download.csdn.net/download/weixin_38664989/12985801)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [callapplybind详细讲解](https://blog.csdn.net/m0_60273757/article/details/121772420)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值