call、apply和bind的区别

50 阅读1分钟

执行方式不同: call和apply是改变后页面加载之后就立即执行,是同步代码。 bind是异步代码,改变后不会立即执行;而是返回一个新的函数。 (2)传参方式不同: call和bind传参是一个一个逐一传入,不能使用剩余参数的方式传参。 apply可以使用数组的方式传入的,只要是数组方式就可以使用剩余参数的方式传入。 (3)修改this的性质不同: call、apply只是临时的修改一次,也就是call和apply方法的那一次;当再次调用原函数的时候,它的指向还是原来的指向 bind是永久修改函数this指向,但是它修改的不是原来的函数;而是返回一个修改过后新的函数,此函数的this永远被改变了,绑定了就修改不了。 1.bind call逗号传参 2.apply数组传参 3.call,apply立即调用 4.bind返回一个新的函数,不立即调用,需手动调用 5.都是动态修改this指向,不修改原先函数的this指向

image.png