js中call,apply,bind方法的区别
每个函数都有call和apply和bind方法。
call方法的第一个参数是该函数的this指向,之后的参数即为函数的参数值,可传多个。
apply方法的第一个参数也是该函数的this指向,第二个参数为函数的参数,只能传入数组,数组内设置多个值。
以上这两者将会直接执行函数。
bind方法的第一个参数也是改变函数的this指向,之后的参数和call的传入方法相同,但该方法返回的还是一个函数,需要添加()手动执行。
var obj = { name: 'pig' } function a() { console.log(this); console.log(arguments); } a.call(obj, 1, 2, 3); a.apply(obj, [1,2,3]); a.bind(obj, 1, 2, 3)();
a.bind(obj, 1)(2, 3);//结果相同。
(function b() {
console.log(this);
}).bind(obj)(); //效果相同
如果为以上三种方法的第一个参数设置为null,则this指向window。