1.call 方法的作用是一模一样的,都是用来改变方法的this关键字并且把方法执行:
而且在严格模式下对于第一个参数是null/undefined这种情况的规律也是一样的;
var obj ={name:"珠峰培训"}; function fn(num1,num2){ console.log(num1 +num2); console.log(this); } //fn.call(100,200);//this是100,num1=200,num2=undefined fn.call(obj,100,200);
2.apply 和call一模一样,第一个参数是this后面参数变为数组
3.bind 只是改变了fn中的this为obj,并且给fn传递了两个参数值1、2,但是此时并没有把fn这个函数执行,
执行bind会有一个返回值,这个返回值res就是我们把fn的this改变后的那个结果
bind 等于把fn进行了预处理
var obj ={name:"珠峰培训"}; function fn(num1,num2){ console.log(num1 +num2); console.log(this); } var res = fn.bind(obj,1,2); res(1,2);