1、call和apply都是函数原型上的方法
2、都是用来改变this指向的,传递的第一个参数均为要改变的this的对象3
3、不同的是,call传递后面的参数时,需要一个一个传递,apply传递后面参数时,以数组的形式传递
4、当后面参数超过三个时,使用call的性能要比apply的性能要好一点
5、关于bind:fn.bind(obj)
bind方法只是预先把fn的this改为obj,此时fn并没有执行,当点击事件触发时才会执行fn,(call/apply都是改变this的同时立即把方法执行)
(预先做啥事的思想被称为柯里化函数)
eg:
let arr = [10,20,30,],
obj = {};
function fn (x, y, z){
fn.apply(obj,arr)// x->10 y-> 20 z->30
fn.call(obj,arr)//x->[10,20,30] y-> undefined z->undefined
fn.call(obj,...arr)
}