箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数
不绑定arguments,用rest参数…解决
基础语法
(param1, param2, …, paramN) => { statements } (param1, param2, …, paramN) => expression //相当于:(param1, param2, …, paramN) =>{ return expression; } // 当只有一个参数时,圆括号是可选的: (singleParam) => { statements } singleParam => { statements } // 没有参数的函数应该写成一对圆括号。 () => { statements }
本身没有this的概念,捕获其所在上下文的 this 值,作为自己的 this 值,this指向全局
箭头函数不能使用new(会报错)
箭头函数没有原型属性(prototype)
箭头函数不能当做Generator函数,不能使用yield关键字
箭头函数不能换行
箭头函数有constructor、length属性
箭头函数可以立即执行
1.applay、call、bind他们三个都能改变函数this的指向问题;
2.applay、call这两个方法的主动调用,bind返回的是改变this指向后的新函数;
3.传参的问题区别,call和bind都是直接传递参数,applay传递的是数组
call(指定的对象,插入的值1,值2...)
call原理
Apply原理
创造唯一的key值 作为我们构造的context内部方法名
执行函数并返回结果
bind原理
如果没有传或传的值为空对象 context指向window
给context添加一个方法 指向this
处理参数 去除第一个参数this 其它传入fn函数[...xxx]把类数组变成数组,arguments为啥不是数组自行搜索 slice返回一个新数组
执行fn
删除方法