一、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 返回的是一个新的函数,你必须调用它才会被执行
二、apply的用法
第一个: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的用法
第一个: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 等等!