用途:手动改变this的指向
区别:
1 apply和call会使当前函数立即执行,bind会返回一个函数,后续需要时再调用
2 call是apply的语法糖,只有传的参数不同,call中要传多个任意参数,apply只可以直接传数组或者类数组
3 bind是为函数绑定一个this上下文
规则: fn.apply(上下文环境,执行所需数组)
fn.call(上下文环境,执行所需单个参数)
fn.bind(上下文环境)
ps:如果上下文的值为null,则使用全局对象代替,相当于没传上下文还用以前的
apply可以将一个数组转换为一个参数列表([p1,p2,p3]转换为p1,p2,p3)
var arr=[1,2,3,4]
console.log (Math.max.apply(null,arr))//4
Math.max()只能传数字,可以使用apply将数组转为一个一个参数传入