js中call,apply,bind方法的区别

本文详细解析了JavaScript中函数的call、apply和bind三种调用方式,包括它们的参数传递方式、执行时机及返回值特性,通过实例展示了不同场景下的应用。

每个函数都有call和apply和bind方法。

 

call方法的第一个参数是该函数的this指向,之后的参数即为函数的参数值,可传多个。

 

apply方法的第一个参数也是该函数的this指向,第二个参数为函数的参数,只能传入数组,数组内设置多个值。

 

以上这两者将会直接执行函数。

 

bind方法的第一个参数也是改变函数的this指向,之后的参数和call的传入方法相同,但该方法返回的还是一个函数,需要添加()手动执行。

 

        var obj = {
            name: 'pig'
        }
        function a() {
            console.log(this);
            console.log(arguments);
        }
        a.call(obj, 1, 2, 3);
        a.apply(obj, [1,2,3]);
        a.bind(obj, 1, 2, 3)();
     a.bind(obj, 1)(2, 3);//结果相同。

    

      (function b() {
        console.log(this);
      }).bind(obj)(); //效果相同

 

 

如果为以上三种方法的第一个参数设置为null,则this指向window。

转载于:https://www.cnblogs.com/zhonghonglin1997/p/10395342.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值