call和apply的深入理解

本文详细解释了JavaScript中call和apply方法的使用区别。call方法可以改变函数内部this的指向,并执行该函数;apply同样可以改变函数内部this的指向并执行函数,但参数传递方式不同。call方法接受的是按顺序传递的多个参数,而apply则接受一个包含所有参数的数组。

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

fn.call(n,x)call里面传递的第一个参数是将fn这个函数里面的this换成n,换言之如果,fn这个函数里面没有this,那么这句话就相当于fn执行。
举个例子

function fn1() {
        alert(1);
    }
function fn2() {
        alert(2);
    }
    fn1.call(fn2);

弹出的结果为1,因为这只是改变了fn1里面的this,但是fn里面没有this,所以弹出的还是1 ;
再来看个例子,还是上述的函数

fn1.call.call(fn2);

这下弹出的就是2
上述代码的意思就是,将fn1.call里面的this换成fn2,而这里面的this是fn1整个函数体的字符串,将其换成fn2之后 就相当于fn2执行了

apply 跟call 的区别
在执行函数传递传递参数的时候,call是一个个的传递参数,apply是把需要传递的参数放到一个数组中,一起传进去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值