相同点:
他们的相同都是来改变this的指向问题。
不同点:
call传参是有多个的参数,第一个是this的指向的对象,后面的是需要使用到的参数。
apply是两个参数第一个是this的指向的对象。第二个参数是一个数组。
//例如: var obj = {}//定义一个空的对象 function f(x,y){ console.log(x,y) console.log(this) //this是指obj } f.apply(obj,[1,2]) //后面的值需要用[]括起来 f.call(obj,1,2) //直接写
bind的传参数和call是一样的,但是call使用了就会直接执行这个函数,但是bind是返回一个函数。需要再执行。
//例如: function f(){ console.log("看我怎么被调用"); console.log(this) //指向this } var obj = {}; f.call(obj) //直接调用函数 var g = f.bind(obj); //bind()不能调用函数 g(); //此时才调用函数