定义:
apply():调一个对象的一个方法,用另一个对象替换当前对象,例如:B.apply(A,arguments);即A对象应用B对象的方法
call():调用一个对象的一个方法,用另一个对象替换当前对象。
call(A,args1,args2,···);即A对象调用B对象的方法。
bind():bind()方法会创建一个函数的实例,其 this 值会被绑定到传给 bind()函数的值。意思就是 bind() 会返回一个新函数。
作用:
①改变this指向;
②借用别的对象的方法;
③单纯的调用函数;
④实现继承;
apply、call和bind的区别:
相似之处:
①都是用来改变函数的this对象的指向的;
②第一个参数都是this要指向的对象;
③都可以利用后续参数传参;
区别:
①apply、call、bind的第一个参数都是this要指向的对象,但apply只有两个参数,第二个参数为一个数组,需要传输的参数值须全部放到数组中。而call、bind一样,参数用逗号分开。
②apply、call返回的的是一个值,而bind返回的是一个函数形式,如果要执行,则后面要再加一个小括号 例如:bind(obj,参数1,参数2,)(),bind只能以逗号分隔形式,不能是数组形式。
call方法调用一个函数,其具有一个指定的this值和分别地提供的参数(参数列表)。注意:该方法的作用和apply()方法类似,只有一个区别,就是call()方法接受的是若干个参数的列表,而appl()接收的只一个数组。
感兴趣的可以去查阅更多资料 谢谢大家