call,apply和bind的区别?

来源:互联网 发布:mac彻底删除office 编辑:程序博客网 时间:2024/06/05 00:26

apply和call都是为了改变某个函数运行时的上下文而存在的(就是为了改变函数内部this的指向);

如果使用apply或call方法,那么this指向他们的第一个参数,apply的第二个参数是一个参数数组,call的第二个及其以后的参数都是数组里面的元素,就是说要全部列举出来;

bind()–也是改变函数体内this的指向;

bind会创建一个新函数,称为绑定函数,当调用这个函数的时候,绑定函数会以创建它时传入bind()方法的第一个参数作为this,传入bind()方法的第二个及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数;

bind与apply、call最大的区别就是:bind不会立即调用,其他两个会立即调用

三个的使用区别:
都是用来改变函数的this对象的指向的;
第一个参数都是this要指向的对象
都可以利用后续参数传参
bind是返回对应函数,便于稍后调用,apply、call是立即调用;

参考http://blog.csdn.net/a_dangdang/article/details/50986168

原创粉丝点击