javascript中call()、apply()、bind()的用法理解

时间:2021-11-01 10:57:37

一、bind的用法

javascript中call()、apply()、bind()的用法理解

第一个:obj.showInfo('arg','arg_18');中传的2个参数通过showInfo方法改变的是obj下中的name和age

第二个:obj.showInfo.bind(this)('bind','bind_18');中bind要传的name和age是通过一个一个传的形式,然后通过showInfo方法改变的是window下的name和age

注:bind 返回的是一个新的函数,你必须调用它才会被执行

javascript中call()、apply()、bind()的用法理解

 

javascript中call()、apply()、bind()的用法理解

二、apply的用法

javascript中call()、apply()、bind()的用法理解

第一个:obj.showInfo('arg','arg_18');中传的2个参数通过showInfo方法改变的是obj下中的name和age

第二个:obj.showInfo.apply(this,['apply','apply_18']);中apply要传的name和age是通过数组的形式,然后通过showInfo方法改变的是window下的name和age

二、call的用法

javascript中call()、apply()、bind()的用法理解

第一个:obj.showInfo('arg','arg_18');中传的2个参数通过showInfo方法改变的是obj下中的name和age

第二个:obj.showInfo.call(this,'call','call_18');中call要传的name和age是通过一个一个传的形式,然后通过showInfo方法改变的是window下的name和age

总结:
    1、call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象
    2、call的参数是直接放进去的,第二第三第n个参数全都用逗号分隔
    3、apply的所有参数都必须放在一个数组里面传进去
    4、bind除了返回是函数以外,它的参数传递方式和call 一样。    
    当然,三者的参数不限定是string类型,允许是各种类型,包括函数 、 object 等等!