call,apply,bind

本文详细解析了JavaScript中call、apply与bind三个方法的功能差异。call与apply用于即时调用并更改函数内的this指向,而bind则创建一个新的函数,并设定其this指向,但不立即执行。

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

call,apply,bind其实都是改变this指向的

但是这里需要注意的是 bind 会返回一个新函数,并且是不会调用的,它只是单纯改变了函数的this指向而已

而call,和apply却是改变了this指向又立马调用了函数;

 

例如:

function b(a) {
    console.log(a);
 }


var c = b.bind(this,'bind');
var d = b.call(this,'call');  

这里只会输入输入'call'

因为b.call(this,'call');就是调用函数b()

而b.bind(this,'bind')只是单纯的改变了b函数的this指向而已,并且返回了一个新的函数,并不会调用b();

 

apply: 接受两个参数 : this执行和一个类数组arguments,一般放在函数内部调用,继承函数内所有的参数,不过也可以像下面那样用

b.apply(this,[1,2]);

 

function b(a,d) {
            console.log(a);
            if (d) {
                console.log(d);
            }
            
            c.apply(this, arguments);
        }
        
        function c (a,d) {
            console.log(a,d);
        }
        
        b(3,4);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值