call,bind,apply都是修改对象的this指针。
function.call():修改this指针并执行函数,参数为具体的参数。
function.bind():修改this指针但是不执行函数,返回的是函数名称,必须调用函数才能执行,参数为具体参数。
function.apply():修改this指针并执行函数,参数为参数数组。
注意:
一、call()
1.非严格模式
如果不传参数,或者第一个参数是null或undefined,this都指向window
2.严格模式
第一个参数是谁,this就指向谁,包括null和undefined,如果不传参数this就是undefined
二、apply()
和call()基本上一致,唯一区别在于传参方式
三、bind()
语法和call一模一样,区别在于立即执行还是等待执行,bind不兼容IE6~8