call(thisArg,arg1,arg2,…) 可调用函数,改变函数内this指向
apply(thisArg,[argsArray]) 可调用函数,改变函数内this指向,传递的值必须包含在数组里
bind(thisArg,arg1,arg2,…)() 不会调用函数,但可改变函数内this指向。(必须调用否则只是绑定) 返回一个新函数,foo.bind()是将foo复制一份。foo和foo.bind已经不再同一个内存地址
箭头函数
(参数1, 参数2, …, 参数N) => { 函数声明 }
区别:
1、call,apply会调用函数,且改变函数内部this指向
2、call,apply传递参数不一样,apply必须以数组形式
3、bind不会调用函数,但会改变函数内部this指向
简单来说
call,apply和bind比较:
call,apply改变作用域同时执行函数,bind改变作用域时生成一个新函数
call和apply比较:
传递参数不一样,call一个一个的,apply数组
主要应用场景:
1、 call主要做继承
2、 apply常根数组有关,如借助数学对象实现数组中最大最小值
3、 bind可用于改变定时器内部this指向