call、apply、bind的区别

一、call、apply、bind的区别

这三个方法都是用来改变函数中this指向的。其中call和apply作用完全一样

相同点

可以改变 this 的指向,传入的第一个参数都是绑定 this 的指向

本质都是为了改变函数运行时的执行上下文,使得函数在执行过程中的 this 值得到绑定并且传入指定的参数。

这样可以在特定的环境中调用函数,扩展函数的灵活性和适用性。


在非严格模式中,如果第一个参数是 nul 或者 undefined,会把全局对象 window 作为 this 的值。

在严格模式中,null 就是 null,undefined 就是 undefined

·apply

apply接受两个参数,第一个参数指定了函数体内 this 对象的指向,第二个参数为一个带下标的集合,这个集合可以为数组,也可以为类数组。
类数组:
1、对象本身可以存取属性
2、对象的length属性课读写

applay(obj,[param1、param2、param3······])

参数说明:

            obj:指定的对象

            param:指定的对象中所带有的参数

注:参数使用数组包含起来。

扩:在不传入参数的情况下,call(obj)和apply(obj)的作用是一样的;

·call

call接受多个参数,第一个参数指定了函数体内this对象的指向,从第二个参数开始的参数依次传入函数体内

call(obj,param1,param2,param3······)

参数说明:

            obj:指定的对象

            param:指定的对象中所带有的参数

注:参数之间用逗号隔开。

·bind

bind的参数与call一致,但是bind不会调用函数,而是返回一个新的函数

bind(obj,param1,param2,param3······)

参数说明:

            obj:指定的对象

            param:指定的对象中所带有的参数

注:参数之间用逗号隔开【和call使用语法一致】

二、使用场景

1、call和apply绑定完this会立即调用当前的函数,而bind绑定完this不会立即调用当前函数,而是将函数返回。

2、call和apply通常用作绑定完立即执行的函数中,而bind通常用来作用在回调函数中定义。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值