bind、call、apply的区别是什么:它们的作用都是相同的,都是动态的修改当前函数内部环境对象this的指向。call和apply是改变后页面加载之后就立即执行,是同步代码。bind是异步代码,改变后不会立即执行;而是返回一个新的函数。
一、相同点
作用相同,都是动态修改this指向;都不会修改原先函数的this指向。
二、异同点
1、执行方式不同:
call和apply是改变后页面加载之后就立即执行,是同步代码。
bind是异步代码,改变后不会立即执行;而是返回一个新的函数。
2、传参方式不同:
call和bind传参是一个一个逐一传入,不能使用剩余参数的方式传参。
apply可以使用数组的方式传入的,只要是数组方式就可以使用剩余参数的方式传入。
3、修改this的性质不同:
call、apply只是临时的修改一次,也就是call和apply方法的那一次;当再次调用原函数的时候,它的指向还是原来的指向。
bind是永久修改函数this指向,但是它修改的不是原来的函数;而是返回一个修改过后新的函数,此函数的this永远被改变了,绑定了就修改不了。
来源:https://blog.csdn.net/weixin_48524561/article/details/124567266
延伸阅读
实例变量是什么
实例变量(也被称为成员变量或字段)是在面向对象编程中使用的术语,它表示某个类的对象实例的属性或状态。每个类的对象实例都有其自己的实例变量集合,而且一个实例的变量值不会影响另一个实例的变量值。
文章标题:bind、call、apply的区别是什么,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/53575