引言: 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()>默认绑定