call()、apply()、bind()的作用?
动态的修改函数内部的this指向。
1.call()语法
函数名.call(修改后的this,形参1,形参2...)
修改后this指向这个对象张三,传参的形式是一个一个传的。
2.apply()语法
函数名.apply(修改后的this,数组/伪数组)
修改后的this指向这个对象李四,apply会自动帮忙遍历数组然后按照顺序进行传参。
3.bind()语法
函数名.bind(修改后的this)
修改后的this指向这个对象王五,bind()并不会立即执行函数,它会返回一个修改过this后的新函数,一般我们不在bind的括号里面进行函数的传参,可以通过返回的函数传参。
call()、apply()、bind()三者的异同点
相同点:
作用一致、都是修改this的指向。
不同点:
(1)传参方式不同,call()是按照顺序传参,apply()是通过数组/伪数组传参。
(2)执行机制不同,call()和apply()是立即执行函数,bind()不会立即执行函数,而是会返回一个修改过this的新函数。