JS中call()、apply()、bind() 的用法

64 阅读1分钟

引言: call() apply() bind()

 1. call()、apply()、bind() 都是用来重定义 this 这个对象的:
    - bind 返回的是一个新的函数,必须调用它才会被执行
2. 对比call() apply() bind()的传参情况
    - 第一个参数均为ths的指向对象
    - 第二个参数区别:
        - call()直接放进去,后面的全用逗号分隔
        - apply(),所有参数都必须放在一个数组里面传进去
        - bind(),除了返回是函数外,它的参数和call()一样
        - 三者的参数不限定是string类型,允许各种类型,包括函数,object等。

总结:call和apply都是改变上下文中的this并立即执行这个函数,bind方法可以让对应的函数想什么时候调就什么时候调用,并且可以将参数在执行的时候添加,这是它们的区别
this绑定的优先级是new>bind>call(apply)>obj.func()>默认绑定