javascript中call()、apply()、bind()的区别
call()、apply()、bind() 都是用来重定义 this 这个对象的
如:
obj.myFun.call(xiao);
obj.myFun.apply(xiao);
obj.myFun.bind(xiao)();
除了bind 方法后要立即执行符号apply和call差不多
bind 返回的是一个新的函数,调用以后才能被执行
对比call 、bind 、 apply 传参情况
obj.myFun.call(xiao,'杭州','上海');
obj.myFun.apply(xiao,['杭州','上海']);
obj.myFun.bind(xiao,'杭州','上海')();
obj.myFun.bind(xiao,['杭州','上海'])();
总结
call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象;
call的参数是直把参数分别放进去;
apply的所有参数都必须放在一个数组里面传进去;
bind返回是函数,它的参数和call 一样;
当然,三者的参数不限定是string类型,允许是各种类型,包括函数 、 object等